About Question enthuware.ocajp.i.v7.2.919 :

Help and support on OCA OCP Java Programmer Certification Questions
1Z0-808, 1Z0-809, 1Z0-815, 1Z0-816, 1Z0-817

Moderator: admin

Svetopolk
Posts: 22
Joined: Sun Nov 18, 2012 1:51 am
Location: Moscow
Contact:

About Question enthuware.ocajp.i.v7.2.919 :

Post by Svetopolk »

After which line will the object created at line XXX be eligible for garbage collection?

public Object getObject(Object a) //0
{ Object b = new Object();  //XXX
Object c, d = new Object(); //1
c = b; //2
b = a = null; //3
return c; //4
}
I think that all local variables become eligible for garbage collection when the block is finished.
A method is over after a return statement. So in line 4 method (just after) getObject is finished and all local variables become eligible for garbage collection.

Where am i wrong?

admin
Site Admin
Posts: 8913
Joined: Fri Sep 10, 2010 9:26 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by admin »

An object may become garbage collected even before end of a method, which is what this question is getting at.

In other words, an object created locally is eligible to be GCed at the end of the method, but that is not necessarily the point where it becomes eligible. The point where an object becomes eligible for GC could be a lot earlier than that as well.

HTH,
Paul.
If you like our products and services, please help us by posting your review here.

Svetopolk
Posts: 22
Joined: Sun Nov 18, 2012 1:51 am
Location: Moscow
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by Svetopolk »

admin wrote:.. could be a lot earlier than that as well...
agree, but back to the question: all options earlier doesn't fit. So .... ????

P.S
Correct answer: Never in this method.
My answer: after line 4

admin
Site Admin
Posts: 8913
Joined: Fri Sep 10, 2010 9:26 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by admin »

Svetopolk wrote:
admin wrote:.. could be a lot earlier than that as well...
agree, but back to the question: all options earlier doesn't fit. So .... ????

P.S
Correct answer: Never in this method.
My answer: after line 4
I see what you mean.
Technically, the objects become eligible after their references go "out of scope" (if there are no other references to them, of course). While it may seem like a return statement would end the scope, it is not so. The scope ends with a closing } and not with a return.

Therefore, "Never in this method" is the right option.

HTH,
Paul.
If you like our products and services, please help us by posting your review here.

Svetopolk
Posts: 22
Joined: Sun Nov 18, 2012 1:51 am
Location: Moscow
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by Svetopolk »

1 more idea. "return c " pass an object outside the method (a link to an object).
After "}" all variables are marked to "destroy" but the object will live outside the method.
Probably it is correct explanation. what do you think?

admin
Site Admin
Posts: 8913
Joined: Fri Sep 10, 2010 9:26 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by admin »

Svetopolk wrote:1 more idea. "return c " pass an object outside the method (a link to an object).
After "}" all variables are marked to "destroy" but the object will live outside the method.
Probably it is correct explanation. what do you think?
Yes, that is correct and that is what the explanation already explains.
Note that at line 2, c is assigned the reference of b. i.e. c starts pointing to the object created at //XXX. So even if at //3 b and a are set to null, the object is not without any reference.
Also, at //4 c is being returned. So the object referred to by c cannot be garbage collected in this method!
If there is a reference, then there is no question. It just cannot be GCed.

Since you mentioned in your original post "all local objects". I was talking from the perspective where there is no reference to a local object. When is that collected - after return statement or after closing }?
If you like our products and services, please help us by posting your review here.

Svetopolk
Posts: 22
Joined: Sun Nov 18, 2012 1:51 am
Location: Moscow
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by Svetopolk »

Thanks.

alex
Posts: 42
Joined: Tue Feb 12, 2013 4:35 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by alex »

Hi,

I agree with the answer: Never in this method.
But on the other hand the answer "Cannot be determined" is also correct because we actually don`t know from context where and when it will be eligible for garbage collection.
So there are two ambiguous answers.
Does it sound reasonable?

Thanks in advance,
Alex

alex
Posts: 42
Joined: Tue Feb 12, 2013 4:35 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by alex »

Hi,

Seems like you have missed my question)

Alex

admin
Site Admin
Posts: 8913
Joined: Fri Sep 10, 2010 9:26 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by admin »

There is no ambiguity in "Never in this method". No matter what happens in other code, it will not be GCed in this method.
HTH,
Paull
If you like our products and services, please help us by posting your review here.

inaelrodrigues
Posts: 1
Joined: Fri Feb 27, 2015 7:03 am
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by inaelrodrigues »

After which line will the object created at line XXX be eligible for garbage collection?

Code: Select all

public Object getObject(Object a) //0    {
  Object b = new Object();  //XXX  
  Object c, d = new Object(); //1 
  c = b; //2 b = a = null; //3 
  return c; //4 
}

Why in line "b = a = null; //3" is note marked for garbage collection?

admin
Site Admin
Posts: 8913
Joined: Fri Sep 10, 2010 9:26 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by admin »

I am sorry, I did not understand your question. Can you please rephrase?

thank you,
Paul.
If you like our products and services, please help us by posting your review here.

Roibeard
Posts: 19
Joined: Sun Jul 12, 2015 6:40 am
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by Roibeard »

After which line will the object created at line XXX be eligible for garbage collection?
After (not on) line 4 is when the method is closed. Isn't that what releases resources for collection?


//thanks

GuillaumeBailly
Posts: 3
Joined: Sat Jan 16, 2016 1:20 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by GuillaumeBailly »

Hi,

I get your point @inaelrodrigues. Honestly, I chose the same answer. For me, after line 3, the references a, b and c point to null, so the object itself is eligible for garbage collection from that point (line 3) and not later.

Regards,
Guillaume

admin
Site Admin
Posts: 8913
Joined: Fri Sep 10, 2010 9:26 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by admin »

Well, the object will be available for GC only after the assignment b = a = null; is executed not before. If you say, at line //3, it could also mean just before b = a = null; because that is also technically line marked //3.

The point is, the whole statement b = a = null; is at line //3 so it would be incorrect to say that the object will be eligible for gc at that line. Only thing that is certain is that right after line //3, it will be eligible for GC.

HTH,
Paul.
If you like our products and services, please help us by posting your review here.

GuillaumeBailly
Posts: 3
Joined: Sat Jan 16, 2016 1:20 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by GuillaumeBailly »

Hi Paul,

Ok, thanks for your answer. Since the question says "After which line...", if I say "line3" I suppose I'm correct too.

Regards,
Guillaume

admin
Site Admin
Posts: 8913
Joined: Fri Sep 10, 2010 9:26 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by admin »

Sorry, I was looking at the wrong code. I checked this question again and the given answer I.e. "never in this method", is correct. Please go through the given explanation.
If you like our products and services, please help us by posting your review here.

lenalena
Posts: 56
Joined: Tue Feb 21, 2017 4:24 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by lenalena »

GuillaumeBailly wrote:Hi,

I get your point @inaelrodrigues. Honestly, I chose the same answer. For me, after line 3, the references a, b and c point to null, so the object itself is eligible for garbage collection from that point (line 3) and not later.

Regards,
Guillaume
c doesn't point to null, it points to the object created in line XXX.

Kevin30
Posts: 28
Joined: Sun Oct 25, 2015 10:14 am
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by Kevin30 »

Hi Paul,

From the question:
Object c, d = new Object(); // 1
Can you tell me if this line creates 2 different objects (with c and d pointing to two seperate objects) or does this create just 1 object (with c and d pointing to the same object).

I think it creates 2 different objects and not 1. Am I correct?

Thank you in advance!

admin
Site Admin
Posts: 8913
Joined: Fri Sep 10, 2010 9:26 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by admin »

It creates only one object. Further, only d points to that object and not c. c is null.
If you like our products and services, please help us by posting your review here.

shambhavi
Posts: 25
Joined: Fri Aug 04, 2017 12:21 am
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by shambhavi »

public int getObject(Object a) //0
{
Object b = new Object(); //XXX
Object c, d = new Object(); //1
c = b; //2
b = a = null; //3
return 0; //4
} // 5

in this code, when is XXX eligible for garbage collection ? after line 5 ?
can you also tell me , once control is abruptly returned back after line 4 back to the caller, when actually is the scope of this method over ?

admin
Site Admin
Posts: 8913
Joined: Fri Sep 10, 2010 9:26 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by admin »

Scope of a method is always from opening bracket to closing bracket.
Object will be eligible to be GCed after line //4 itself. The difference between //4 and //5 is not important for the purpose of the exam.
If you like our products and services, please help us by posting your review here.

shambhavi
Posts: 25
Joined: Fri Aug 04, 2017 12:21 am
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by shambhavi »

after line 4 anyways the control is transferred back to the caller, which means that we are out of the scope of the method after line 4 ,

and hence we say as long as we are in/within the method , the object is never eligible for GC .
Am I right ? :)

admin
Site Admin
Posts: 8913
Joined: Fri Sep 10, 2010 9:26 pm
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by admin »

That is correct.
If you like our products and services, please help us by posting your review here.

shambhavi
Posts: 25
Joined: Fri Aug 04, 2017 12:21 am
Contact:

Re: About Question enthuware.ocajp.i.v7.2.919 :

Post by shambhavi »

thank you !

and one more clarification .
if instead of return c, if we had return (c=null);

then on this line itself the object would become eligible for garbage collection right ? i.e. after the expression (c=null ) is evaluated . since before the full statement return (c=null); is complete, when (c=null ) is evaluated itself its eligible for GC.

Am I right ?

Post Reply

Who is online

Users browsing this forum: No registered users and 7 guests