💎 حافظه استک
🔆 حافظه استک در واقع فضاییست که به اجرا شدن توابع، داده های نوع پیشین، متغیر های محلی و متغیر های مرجع موجود در توابع اختصاص داده شده است. دسترسی به حافظه استک بصورت خروج به ترتیب عکس ورود یا Last in First Out میباشد. هر متدی که اجرا میشود در حافظه استک یک بلاک حافظه به آن اختصاص داده میشود و هر داده پیشین و ارجاع به آبجکت های موجود در بدنه متد، در این بلاک حافظه ذخیره میشود. وقتی متد بصورت کامل اجرا میشود، بلاک حافظه از حافظه استک حذف و این حافظه برای استفاده مجدد در دسترس قرار میگیرد. عمر مقادیر و داده های موجود در حافظه استک وابسته به زمان اجرای متدی است که این مقادیر را در حافظه ایجاد کرده است.
طول حافظه استک ثابت میباشد و بعد از ایجاد شدن قابل تغییر نیست. خطای استک اور فلو (سر ریز پشته) نیز زمانی که استک پر شده باشد رخ میدهد. یعنی دقیقا زمانی که هیچ حافظه ای برای اجرا شدن متد بعدی وجود نداشته باشد. برای مثال وقتی که یک متد بازگشتی بی نهایت بار خودش را صدا بزند:
public static int recursiveFunc(){
return recursiveFunc();
}
#Stack #Stack_Memory #Memory
———
☕️@PieceJava
🔆 حافظه استک در واقع فضاییست که به اجرا شدن توابع، داده های نوع پیشین، متغیر های محلی و متغیر های مرجع موجود در توابع اختصاص داده شده است. دسترسی به حافظه استک بصورت خروج به ترتیب عکس ورود یا Last in First Out میباشد. هر متدی که اجرا میشود در حافظه استک یک بلاک حافظه به آن اختصاص داده میشود و هر داده پیشین و ارجاع به آبجکت های موجود در بدنه متد، در این بلاک حافظه ذخیره میشود. وقتی متد بصورت کامل اجرا میشود، بلاک حافظه از حافظه استک حذف و این حافظه برای استفاده مجدد در دسترس قرار میگیرد. عمر مقادیر و داده های موجود در حافظه استک وابسته به زمان اجرای متدی است که این مقادیر را در حافظه ایجاد کرده است.
طول حافظه استک ثابت میباشد و بعد از ایجاد شدن قابل تغییر نیست. خطای استک اور فلو (سر ریز پشته) نیز زمانی که استک پر شده باشد رخ میدهد. یعنی دقیقا زمانی که هیچ حافظه ای برای اجرا شدن متد بعدی وجود نداشته باشد. برای مثال وقتی که یک متد بازگشتی بی نهایت بار خودش را صدا بزند:
public static int recursiveFunc(){
return recursiveFunc();
}
#Stack #Stack_Memory #Memory
———
☕️@PieceJava
👍10