PDA

View Full Version : پاک کردن NODE بدون در نظر گرفتن Garbage collector



mostafa_ra
یک شنبه 13 آبان 1386, 15:56 عصر
فرض کنین 2 تا node داریم که first به اولی اشاره میکنه اگه first=first.next قرار دهیم
چون دیگه آن خانه از حافظه که first بهش اشاره میکرد اشاره گری نداره garbage collector جاوا اون رو پاک میکنه. حالا فکر کنین بخوایم خودمون دستی اون خونه از حافظه رو پاک کنیم بعضی استادا میگن باید اول بنویسیم temp=first , بعدش first=first.next و بعدش temp=null.
ولی به نظر من این غلطه چون ما با نوشتن temp=null فقط اشاره گری که به اون خانه از حافظه اشاره میکرد رو به null اشاره دادیم یعنی به هیچ جا اشاره نکنه ولی اون خونه از حافظه سرجاش مونده.تو c++ اگه null بدیم پاک نمیکنه حتما باید delete استفاده کنیم ولی اینجا نمیدونم خودمون چطور باید پاک کنیم

saeed_Z_F
یک شنبه 13 آبان 1386, 16:14 عصر
سلام
تا جایی که من می دونم بر اساس الگوریتم Garbage collection که توی JVM هست وقتی شما به یک reference مقدار null می دهید در همان لحظه حفظه آزاد نمی شود و فقط اشاره گر حذف می شود ولی فرق جاوا و C++ در همینه که در C++ حافظه برای همیشه باقی می مونه ولی در جاوا بر اساس الگوریتم Garbage collection در اولین عملیات زباله روبی اون حافظه آزاد میشه .