در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.
این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .
StringBuilder vs StringBuffer vs String
بخشی از حافظه است که برای تخصیص پویای حافظه به اشیا در زمان اجرای برنامه استفاده میشود. به عبارت دیگر، زمانی که یک شیء جدید در برنامه ایجاد میشود، فضایی برای آن در Heap رزرو میشود. Heap یک فضای بزرگ و مشترک است که توسط تمام اشیاء برنامه استفاده میشود.
زمانی رخ میدهد که برنامهای حافظهای را که دیگر به آن نیازی ندارد، آزاد نمیکند. این حافظه بلااستفاده در Heap باقی میماند و در نهایت میتواند منجر به کاهش عملکرد برنامه، کند شدن سیستم و حتی کرش برنامه شود.
جدول مقایسه :
اگر به یک شیء ، ارجاعی وجود داشته باشد که دیگر قابل دسترسی نباشد، Garbage Collector نمیتواند آن شیء را حذف کند.
زمانی که دو یا چند شیء به صورت دایرهای به هم ارجاع دهند، Garbage Collector نمیتواند هیچکدام از آنها را حذف کند.
اگر یک متغیر Static به یک شیء در مجموعه اشاره کند، تا زمانی که برنامه اجرا میشود، آن شیء از حافظه آزاد نمیشود.
اگر Listener یا Callback به یک شیء در مجموعه اضافه شود و هرگز حذف نشود، میتواند باعث ایجاد Memory Leak شود.
در نهایت، برای جلوگیری از Memory Leak در مجموعهها، باید به مدیریت صحیح ارجاعات، استفاده از ابزارهای تحلیل حافظه و انتخاب مجموعه مناسب توجه کنید.
منتظر نگاه های زیباتون هستم .
موفق و پیروز باشید.