class HappyGarbage01
{
public static void main(String args[])
{
HappyGarbage01 h = new HappyGarbage01();
h.methodA(); /* Line 6 */
}
Object methodA()
{
Object obj1 = new Object();
Object [] obj2 = new Object[1];
obj2[0] = obj1;
obj1 = null;
return obj2[0];
}
}
Where will be the most chance of the garbage collector being invoked?
A -
After line 9
B -
After line 10
C -
After line 11
D -
Garbage collector never invoked in methodA()
2-
class Bar { }
class Test
{
Bar doBar()
{
Bar b = new Bar(); /* Line 6 */
return b; /* Line 7 */
}
public static void main (String args[])
{
Test t = new Test(); /* Line 11 */
Bar newBar = t.doBar(); /* Line 12 */
System.out.println("newBar");
newBar = new Bar(); /* Line 14 */
System.out.println("finishing"); /* Line 15 */
}
}
At what point is the Bar object, created on line 6, eligible for garbage collection?
A -
after line 12
B -
after line 14
C -
after line 7, when doBar() completes
D -
after line 15, when main() completes
3-
class Test
{
private Demo d;
void start()
{
d = new Demo();
this.takeDemo(d); /* Line 7 */
} /* Line 8 */
void takeDemo(Demo demo)
{
demo = null;
demo = new Demo();
}
}
When is the Demo object eligible for garbage collection?
A -
After line 7
B -
After line 8
C -
After the start() method completes
D -
When the instance running this code is made eligible for garbage collection.
4-
public class X
{
public static void main(String [] args)
{
X x = new X();
X x2 = m1(x); /* Line 6 */
X x4 = new X();
x2 = x4; /* Line 8 */
doComplexStuff();
}
static X m1(X mx)
{
mx = new X();
return mx;
}
}
After line 8 runs. how many objects are eligible for garbage collection?
A -
0
B -
1
C -
2
D -
3
5-
public Object m()
{
Object o = new Float(3.14F);
Object [] oa = new Object[l];
oa[0] = o; /* Line 5 */
o = null; /* Line 6 */
oa[0] = null; /* Line 7 */
return o; /* Line 8 */
}
When is the Float object, created in line 3, eligible for garbage collection?
A -
just after line 5
B -
just after line 6
C -
just after line 7
D -
just after line 8
6-
class X2
{
public X2 x;
public static void main(String [] args)
{
X2 x2 = new X2(); /* Line 6 */
X2 x3 = new X2(); /* Line 7 */
x2.x = x3;
x3.x = x2;
x2 = new X2();
x3 = x2; /* Line 11 */
doComplexStuff();
}
}
after line 11 runs, how many objects are eligible for garbage collection?
A -
0
B -
1
C -
2
D -
3
7-
What allows the programmer to destroy an object x?
A -
x.delete()
B -
x.finalize()
C -
Runtime.getRuntime().gc()
D -
Only the garbage collection system can destroy an object.
8-
Which statement is true?
A -
Programs will not run out of memory.
B -
Objects that will never again be used are eligible for garbage collection.
C -
Objects that are referred to by other objects will never be garbage collected.
D -
Objects that can be reached from a live thread will never be garbage collected.
9-
Which statement is true?
A -
Objects from a class with the finalize() method overridden will never be garbage collected.
B -
Objects instantiated within anonymous inner classes are placed in the garbage collectible heap.
C -
Objects with at least one reference will never be garbage collected.
D -
All objects that are eligible for garbage collection will be garbage collected by the garbage collector.
10-
Which statement is true?
A -
Memory is reclaimed by calling Runtime.gc().
B -
Objects are not collected if they are accessible from live threads.
C -
An OutOfMemory error is only thrown if a single block of memory cannot be found that is large enough for a particular requirement.
D -
Objects that have finalize() methods always have their finalize() methods called before the program ends.