دوره مقدماتی جاوا
نصب ابزار
آشنایی با پکیج منیجر Chocolatey-
ابزار مدیریت پروژه Maven
-
جاوا چطور کار میکنه؟
-
دانلود و نصب JDK 8
-
معرفی محیط های توسعه جاوا
-
نصب IntelliJ IDEA Community
-
ساخت و اجرای اولین پروژه جاوا
- مفاهیم و اصول برنامهنویسی شیء گراساختار کد در جاوا
-
گفتگوی JVM و compiler، کی مهمتره؟!
-
نوشتن برنامه به کمک تست (TDD)
-
سفری به دنیای شیء گرایی
-
تفاوت بین کلاس و شیء
-
روش Given-When-Then برای نوشتن تست
-
بازی حدس اعداد (Guessing Game)
-
مدیریت حافظه در جاوا: Garbage Collection
-
وراثت (Inheritance)
-
پلیمورفیسم (Polymorphism)
-
متغیرهای خود را بشناسید
-
How Objects Behave
-
Extra-Strength Methods
-
Using the Java Library
-
Better Living in Objectville
-
Serious Polymorphism
-
Life and Death of an Object
-
Numbers Matter
-
Data Structures
-
Lambdas and Streams: What, Not How
-
Risky Behavior
-
A Very Graphic Story
-
Work on Your Swing
-
Saving Objects (and Text)
-
Make a Connection
-
Dealing with Concurrency Issues
مدیریت حافظه در جاوا: Garbage Collection
خب توی مثال قبلی بازی حدس عدد هر بار که حلقه دوباره اجرا میشه، یه عدد تصادفی جدید ساخته میشه و متغیر targetNumber
به اون عدد جدید اشاره میکنه.
عدد قبلی که تو حافظه بود، دیگه بهش نیازی نداریم چون targetNumber
به عدد جدید اشاره کرده. اینجاست که Garbage Collection وارد عمل میشه و اون عدد قبلی رو از حافظه حذف میکنه.
وقتی یه شیء توی جاوا ساخته میشه، وارد یه بخش خاص از حافظه به اسم Heap (انبار) میشه. این انبار جاییه که همهی اشیاء جاوا—هر جا و هر زمانی که ساخته بشن—اونجا زندگی میکنن.
اما این انبار یه ویژگی خیلی خاص داره: Garbage Collection یا مدیریت زباله!
Garbage Collection چطور کار میکنه؟
اختصاص حافظه (Memory Allocation):
وقتی یه شیء میسازی، جاوا مقدار حافظهی لازم رو توی Heap بهش اختصاص میده. مثلاً اگه شیءت 15 ویژگی داشته باشه، جاوا برای نگهداری اون ویژگیها بهش فضای بیشتری میده نسبت به یه شیء با دو ویژگی.جمعآوری زباله (Garbage Collection):
جاوا خودش حافظهی اشیائی که دیگه استفاده نمیشن رو آزاد میکنه.- اگه JVM ببینه که هیچ راهی برای دسترسی به یه شیء نیست، اون شیء تبدیل به زباله (Garbage) میشه.
- وقتی حافظه کم بشه، Garbage Collector اجرا میشه، اشیاء غیرقابل دسترسی رو پاک میکنه، و حافظهشون رو برای استفادههای بعدی آزاد میکنه.
نکتهی کلیدی:
هر شیئی که دیگه توسط هیچ متغیری اشاره نشه، برای Garbage Collection در نظر گرفته میشه.
به طور مثال:
class Test {
public static void main(String[] args) {
Dog d1 = new Dog(); // Dog ساخت یه شیء از نوع
Dog d2 = new Dog();
d1 = null; // حالا شیء اول قابل دسترسی نیست
d2 = null; // حالا شیء دوم هم قابل دسترسی نیست
// Garbage Collector میتونه این دو شیء رو پاک کنه
}
}
نکتههای جالب در مورد Heap:
- همهی اشیاء جاوا توی Heap ساخته میشن.
- JVM خودش تصمیم میگیره کی Garbage Collector رو اجرا کنه.
- اگه شیئی قابل دسترسی باشه (مثلاً هنوز متغیری بهش اشاره میکنه)، پاک نمیشه.