File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Dan's question 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 "Dan Watch "Dan New topic

Dan's question

Shiva Mohan
Ranch Hand

Joined: Jan 05, 2006
Posts: 481

Which object is not eligible for garbage collection after method m1 returns?
My understanding inside the method m1()
i1,i2,i3,i4 refers to each I() object,can anyone please explain i1.other(i3).
Tim LeMaster
Ranch Hand

Joined: Aug 31, 2006
Posts: 226
Each instance of I has a variable "other" that holds a reference to another
instance of I.


Assigns the object reference i3 to i1's instance variable other. There by giving i1 a reference to the object currently referenced by i3.

Lets call the 4 objects created in these 2 lines O1, O2, O3, O4.

So at the end (before returning) of m1()

i1 is a reference to O1
i2 is a reference to O2
i3 is a reference to O3
i4 is a reference to O4

O1.other is a reference to O3
O3.other is a reference to O2
O2.other is a reference to O1

04.other is a reference to O4.

But after returning from m1() no live thread has a reference to O1, O2, O3, or O4 so I would think they are all eligible for garbage collection. You don't keep a reference to the J object created, so its eligible also. If the program didn't terminate after the call to m1() the array object reference by args wouldn't be eligible for garbage collection.

Or did a somehow miss something?
I agree. Here's the link:
subject: Dan's question
It's not a secret anymore!