با عرض سلام و احترام خدمت دوستان کد ایتی عزیز.در ادامه سری آموزش های جاوا اسکریپت این جلسه ما در رابطه با سوال Heap memory چیست؟ بحث خواهیم کرد. با ما همراه باشید.
Heap memory چیست؟
Heap ها نواحی حافظه ای هستند که به هر برنامه اختصاص داده شده اند. حافظه تخصیص داده شده به هیپ ها را می توان به صورت پویا تخصیص داد، برخلاف حافظه اختصاص داده شده به پشته ها.
در نتیجه، هر زمان که برنامه به آن نیاز داشت، می توان بخش heap را درخواست کرد و آزاد کرد. این حافظه نیز سراسری است، به این معنی که به جای اینکه بوسیله تابعی که در آن تخصیص داده شده باشد، می توان از هر کجای برنامه که به آن اختصاص داده شده است، به آن دسترسی پیدا کرد و آن را تغییر داد. حافظه تخصیص یافته پویا با استفاده از «اشارهگرها» ارجاع میشود، که به نوبه خود منجر به کاهش جزئی عملکرد نسبت به استفاده از متغیرهای محلی (در پشته) میشود.
حافظه هیپ به عنوان “dynamic” memory (حافظه پویا )نیز شناخته می شود.
مموزی هیپ با حافظه پشته محلی ، نه تنها در نحوه تخصیص و توزیع متغیرها هنگام فراخوانی تابع، بلکه در نحوه توزیع متغیر هنگام خروج تابع نیز متفاوت است. این “بلوک” حافظه معمولاً به طور خودکار با توجه به اندازه شیئی که ایجاد می کنند تعیین می شود.
مزایای حافظه هیپ
- Heap هیچ محدودیتی در اندازه حافظه ندارد.
- این به شما امکان می دهد به متغیرها در سطح سراسری دسترسی داشته باشید.
- جمع آوری زباله روی heap memory اجرا می شود تا حافظه مورد استفاده شی را آزاد کند.
- روش heap نیز در صف اولویت استفاده می شود.
معایب heap memory
- زمان زیادی برای اجرا در مقایسه با پشته نیاز دارد.
- زمان بیشتری برای محاسبه نیاز دارد.
- این می تواند حداکثر حافظه ای را که یک سیستم عامل می تواند فراهم کند را فراهم نماید.
- مدیریت حافظه در heap memory پیچیده تر است زیرا در سطح سراسری استفاده می شود.
مشکلاتی که با مموری هیپ قابل حل هستند
در ادامه به چند نکته مهم در مورد جمع آوری زباله اشاره می شود.
- ماشین مجازی جاوا جمع آوری زباله را فراخوانی می کند تا از شر اشیاء حافظه heap استفاده نشده خلاص شود. هر شی که دیگر توسط برنامه جاوا در حال اجرا استفاده نمی شود را حذف می کند. در این فرآیند، حافظه بلااستفاده برای سایر اشیاء جدید برای استفاده آزاد می شود.
- Garbage collection متد ()finalize یک شی را قبل از حذف آن از حافظه و دادن فرصتی برای پاکسازی فراخوانی می کند. اگر برنامه نویس این روش را لغو نکند، متد نهایی سازی پیش فرض فراخوانی می شود (روشی که در کلاس Object تعریف شده است).
- جمع آوری زباله بر اساس اندازه حافظه تخصیص یافته پویا از هیپ فراخوانی می شود. کند و پیش بینی آن سخت است. برنامه هایی با محدودیت های عملکرد زمان واقعی ممکن است تشخیص این عملیات را دشوار بدانند.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<script> // Define a function called Geeks function Codeit() { // Declare a pointer variable p // No memory has been allocated yet, except for the pointer itself on the stack let p; // Declare a boolean variable flag and set it to true let flag = true; if (flag) { // Declare a char array called buffer and allocate 1000 bytes on the stack let buffer = new Array(1000); // Allocate 1000 bytes on the heap and assign the pointer to p p = new Array(1000); } // buffer is deallocated here but pointer // p is not Here occurs a memory leak, // We have to call delete[] p; } // This code is contributed by Aman Kumar. </script> |
خب دوستان عزیز به پایان مقاله Heap memory چیست؟ رسیدیم امیدواریم این مقاله برای شما مفید واقع گرفته شده باشد.
سایر مقالات:
break و continue در جاوا اسکریپت
تفاوت بین document load و DOMContentLoaded در جاوا اسکریپت
دیدگاهتان را بنویسید