Win a copy of Learn Spring Security (video course) this week in the Spring forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Garbage Collection

 
Thomas Markl
Ranch Hand
Posts: 192
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have got a question regarding object finalization.

My Question is:
- When I set „tf = null“ why doesn’t it call the finalize method and print out
("Hey, I'm in TestFinalize finalize()")?
It seems it only calls the finalize() method when I set the reference to null
(tf = null) AND excplicitly suggest garbage collection with „System.gc()“.
WHY doesn’t it simply call finalize() method when i set the object reference
To null. Why do I have to call System.gc() additionally?

 
Ilja Preuss
author
Sheriff
Posts: 14112
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
When an object is unreachable, it becomes *eligible* for gc'ing - that is, the next time the garbage collector runs, it *may* gc the object. The finalize method is called *immediately* before the object gets gc'ed and there is no guarantee to when or wether this will happen besides that it will happen before an OutOfMemoryError occurs. Even System.gc() does only *suggest* that the gc gets activated.
Did that help?
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic