در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.
این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .
StringBuilder vs StringBuffer vs String
در برنامهنویسی جاوا، دو ناحیه اصلی از حافظه برای ذخیره دادهها استفاده میشود: Heap و Stack. درک تفاوت بین این دو ناحیه و نحوه قرارگیری مجموعهها در آنها برای درک بهتر مدیریت حافظه و عملکرد برنامه بسیار مهم است.
FIFO (First In, First Out):
دادهها به ترتیب وارد شدن و خارج شدن ذخیره میشوند.
فضای محدود: اندازه Stack معمولاً نسبت به Heap کوچکتر است.
محلی برای متغیرهای محلی: متغیرهای محلی یک متد، ارجاعات به اشیاء و دادههای اولیه در Stack
ذخیره میشوند.
خودکار: مدیریت Stack توسط کامپایلر به صورت خودکار انجام میشود.
ارجاعات: خود مجموعه (مانند ArrayList، HashSet و ...) در Heap ذخیره میشود.
متغیرهای محلی: اما متغیرهایی که به این مجموعهها اشاره میکنند (مانند ارجاعات به اشیاء) در
Stack ذخیره میشوند.
Dynamic allocation:
فضای مورد نیاز برای اشیاء به صورت پویا در زمان اجرا تخصیص داده میشود.
فضای بزرگ: معمولاً بزرگترین ناحیه حافظه در یک برنامه است.
Garbage collection:
اشیاء بلااستفاده به طور خودکار توسط Garbage Collector از Heap حذف میشوند.
اشیاء: خود اشیاء مجموعهها (مانند عناصر یک ArrayList) در Heap ذخیره میشوند.
ساختار داده: ساختار داخلی مجموعه (مانند آرایه در ArrayList یا درخت در TreeMap) نیز در Heap قرار
میگیرد.
مثال خیلی ساده :
public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(); // ارجاع به ArrayList در Stack، خود ArrayList در Heap list.add("Hello"); // رشته "Hello" در Heap، ارجاع به آن در Stack } }
در این مثال:
list
از نوع ArrayList
در Stack ذخیره میشود.ArrayList
و رشته "Hello" در Heap ذخیره میشوند.list
یک ارجاع به آدرس شیء ArrayList
در Heap است.مدیریت حافظه Heap به عهده خود برنامه نویس است اما در جاوا Garbage Collector نیز به طور خودکار اشیاء بلا استفاده را از heap حذف میکند.
درک این مفاهیم به شما کمک میکند تا برنامههای کارآمدتر و با مصرف حافظه کمتر بنویسید.
منتظر نگاه های زیباتون هستم .
موفق و پیروز باشید.