Re: Calling the garbage collector.

Andrew Haley <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
On 07/27/2009 11:41 AM, abhishek desai wrote:
> Hi,
> 
> I have a simple java program to test the garbage collection. It has
> the two java files shown below.
> 
> TestClass.java
> 
> public class TestClass {
>         protected void finalize() throws Throwable {
>                 System.out.println("Java TestClass finalizer called.");
>         }
> }
> 
> 
> HelloWorld.java
> 
> import TestClass;
> 
> class HelloWorld
> {
>         public static void main(String args[]) {
>                 System.out.println("HelloWorld\n");
> 
>                 TestClass a =  new TestClass();
>                 a = null;
>                 System.gc();
>         }
> }
> 
> 
> When I compile this using javac to a class file and run the bytecode
> using the 'java' interpreter, the finalize funtion for TestClass.java
> is called.
> When I compile the same set of files using gcj to machine code, the
> finalizer is not called. Can any one tell me why this happens and what
> I will have to do to get the finalizer called when object is no longer
> used.

The finalize will be called when the object is collected.  When the
object actually gets collected is not defined, and is not guaranteed
to happen before the program exits.  Also, there is no absolute
guarantee that the object will ever be collected.

Andrew.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.