Garbage Collection

by Michael Thomas

(Tutorial Home Page)

by Michael Thomas

(Tutorial Home Page)

Topic Notes
JVM's garbage collection.
  • Java manages memory for you.
  • The JVM will only perform garbage collection if it needs more memory to continue executing.  Helps efficiency.
  • You can make a call to garbage collection with System.gc(), but this does not guarantee when it will happen.
  • JVM runs the object's finalize() method prior to garbage collection.  In other words, Java notifies the object.
  • The garbage collector does not claim objects in any certain order.  Helps efficiency.
  • If the JVM is halted at the conclusion of the program, it could be that no garbage collection ever occurs.
Candidate for Garbage Collection
  • Any object is a candidate for garbage collection when your program can no longer reference it (orphaned object).
  • Local variables are candidate for garbage collection when the method returns (finished).
  • Any object is available for garbage collection after it is set to "null". (ex: strX="Hello"; strX=null;)
  • If you reuse a reference object, the prior object is a candidate.  (ex: String strX ="Hello"; strX = "Hello2") or (ex: int [] MyArray = {1,2,3}; MyArray = new int[3];)
Other notes
  • finalize() could be a good place to close files and other resources.
  • Always invoke the superclass's finalize() method if you override finalize().
  • gc() (in Runtime & System) will allow you to directly run the garbage collector.
  • finalize() signature:
    protected void finalize() throws Throwable()
  • To use finalize() you must use a try-catch block or rethrow the error object.