Why is it preferred to not use finalize for clean up?

Answer

Problem with finalize is that garbage collection has to make two rounds in order to remove
objects which have finalize methods.
Below figure will make things clear regarding the two rounds of garbage collection rounds
performed for the objects having finalized methods.
 
 

 

 
 
Note:Few of the content is taken from various blogs/articles.
 
In this scenario there are three objects Object1, Object2, and Object3. Object2 has the finalize
method overridden and remaining objects do not have the finalize method overridden.
Now when garbage collector runs for the first time it searches for objects whose memory has to
free. He can see three objects but only cleans the memory for Object1 and Object3. Object2 it
pushes to the finalization queue.
Now garbage collector runs for the second time. He see’s there are no objects to be released and
then checks for the finalization queue and at this moment, it clears object2 from the memory.
So if you notice that object2 was released from memory in the second round and not first. That is
why the best practice is not to write clean up Non.NET resources in Finalize method rather use

the DISPOSE.

All asp Questions

Ask your interview questions on asp

Write Your comment or Questions if you want the answers on asp from asp Experts
Name* :
Email Id* :
Mob no* :
Question
Or
Comment* :
 





Disclimer: PCDS.CO.IN not responsible for any content, information, data or any feature of website. If you are using this website then its your own responsibility to understand the content of the website

--------- Tutorials ---