aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Explain the output for garbage collection Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Explain the output for garbage collection" Watch "Explain the output for garbage collection" New topic
Author

Explain the output for garbage collection

B pandoo
Ranch Hand

Joined: Nov 14, 2006
Posts: 37
public class GCDemo line1
{ 2
public static void main(String[] args) 3
{ 4
Object a,b,c; 5
Integer one =new Integer(1); 6
Float titanic =new Float(1.23); 7
StringBuffer str =new StringBuffer("sailing.."); 8
a=one; 9
b= titanic; 10
c=str; 11
a=b=c; 12
a=null; 13
titanic =null; 14
str=null; 15
System.gc(); 16


}
}

Identify the object that will be eligible for garbage collection after execution of line15

select any 1 option

1)object created at line 6
2)object created at line 7
3)object created at line 8
4)All of them
5)any of them.

I believe both objects at line 7 and line 8 is garbage collected.but the Question is to choose only one option.please let me know the closest one to choose.
Anand Loni
Ranch Hand

Joined: Jan 20, 2006
Posts: 150
Hi,

I think correct answer is 4. As line 15 is str=null, after execution of this line object refered by str will also eligible for garbage collection. So objects created on lines 6, 7 and 8 will be eligible for garbage collection.

Regards,
Anand.


~ Anand,
SCJP 1.5, SCWCD 1.5
marko salonen
Greenhorn

Joined: Nov 19, 2006
Posts: 8
I would say that only object created at line 7 is ready for garbage. Why?
Because variable one still holds its reference to Integer instance.
Variable c is still holding its reference to str.
The only instance that is not referenced is Float because non of a, b or c are referenced to it and variable titanic is set to null.
Or, b is set but later it is changed to reference on str.
[ November 24, 2006: Message edited by: marko salonen ]
Joe Harry
Ranch Hand

Joined: Sep 26, 2006
Posts: 9622
    
    2

Object created at line 7 is eligible for gc.

Reasoning:

At line 6, one = 1
At line 7, titanic = 1.23
At line 8, str = sailing...
At line 9, a, one = 1
At line 10, b, titanic = 1.23
At line 11, c, str = sailing...
At line 12, c's value is given to b which in turn is given to a, so in effect a, b, c, str = sailing... and titanic = 1.23
At line 13, b, c, str = sailing...
At line 14, No one is pointing to 1.23 after making titanic = null

So in conclusion, the object created at line 7 is the only one which is eligible for gc.


SCJP 1.4, SCWCD 1.4 - Hints for you, Certified Scrum Master
Did a rm -R / to find out that I lost my entire Linux installation!
Burkhard Hassel
Ranch Hand

Joined: Aug 25, 2006
Posts: 1274
Hi sailors,

I agree with Marko.

Given


after line 11 it looks like this:






after line 12:







after line 13:






and after line 14 & 15





So only the Float object is without any reference and eligible.

By the way: the topic is "Explain the output".
This is easier:
there is no output.



Yours,
Bu.


all events occur in real time
Joe Harry
Ranch Hand

Joined: Sep 26, 2006
Posts: 9622
    
    2

Hi Bu,

When I typed my answer, I thought of using circles and arrows....Can you please tell me which tool you use to draw those shapes for the objects??
Burkhard Hassel
Ranch Hand

Joined: Aug 25, 2006
Posts: 1274
I made it with Corel Draw and exported it to gifs (with transparency).

But there should be also easier ways to do it. Corel is no freeware.
Perhaps some other ranchers know some freeware links.

Yours,
Bu.
Joe Harry
Ranch Hand

Joined: Sep 26, 2006
Posts: 9622
    
    2

Hi Bu,

Thanks for the information.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Explain the output for garbage collection