Re: Calling the garbage collector.
"BGB" <[email protected]>
| Newsgroups | gmane.comp.gcc.java.devel |
|---|---|
| Message-ID | <[email protected]> |
----- Original Message ----- From: "Andrew Haley" <[email protected]> To: "abhishek desai" <[email protected]> Cc: <[email protected]> Sent: Monday, July 27, 2009 3:07 AM Subject: Re: Calling the garbage collector. > 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. > hmm... maybe Java needs 'delete'?... > Andrew. >