第一题:
有这样一道题和答案,如下:[size=10px]程序段3: 1.Object aobj = new Object ( ) ; 2.Object bobj = new Object ( ) ; 3.Object cobj = new Object ( ) ; 4.aobj = bobj; 5.aobj = cobj; 6.cobj = null; 7.aobj = null; 问:这段代码中,第几行的内存空间符合垃圾收集器的收集标准? 答:第7行。注意这类题型是认证考试中可能遇到的最难题型了。 行1-3分别创建了Object类的三个对象:aobj,bobj,cobj 行4:此时对象aobj的句柄指向bobj,所以该行的执行不能使aobj符合垃圾收集器的收集标准。 行5:此时对象aobj的句柄指向cobj,所以该行的执行不能使aobj符合垃圾收集器的收集标准。 行6:此时仍没有任何一个对象符合垃圾收集器的收集标准。 行7:对象cobj符合了垃圾收集器的收集标准,因为cobj的句柄指向单一的地址空间。在第6行的时候,cobj已经被赋值为null,但由cobj同时还指向了aobj(第5行),所以此时cobj并不符合垃圾收集器的收集标准。而在第7行,aobj所指向的地址空间也被赋予了空值null,这就说明了,由cobj所指向的地址空间已经被完全地赋予了空值。所以此时cobj最终符合了垃圾收集器的收集标准。 但对于aobj和bobj,仍然无法判断其是否符合收集标准。 总之,在Java语言中,判断一块内存空间是否符合垃圾收集器收集标准的标准只有两个: 1.给对象赋予了空值null,以下再没有调用过。 2.给对象赋予了新值,既重新分配了内存空间。 最后再次提醒一下,一块内存空间符合了垃圾收集器的收集标准,并不意味着这块内存空间就一定会被垃圾收集器收集。[size=10px][/size][/size]问:第四行 aobj = bobj 时,第一行创建的对象的内存空间难道不符合垃圾收集器的收集标准么?第二题:
Which of the following statements are true?
Mutiple: 
1) The automatic garbage collection of the JVM prevents programs from ever running out of memory2) A program can suggest that garbage collection be performed but not force it3) Garbage collection is platform independent4) An object becomes eligible for garbage collection when all references denoting it are set to null.Answer:24问题:为什么第一个选项不选呢?gc难道不是用来防止程序内存耗尽的吗?
第三题:
In the following code, which is the earliest statement, where the object originally held in e, may be garbage collected:   1.public class Test {   2.  public static void main (String args []) {   3.    Employee e = new Employee("Bob", 48);   4.    e.calculatePay();   5.    System.out.println(e.printDetails());   6.    e = null;   7.    e = new Employee("Denise", 36);   8.    e.calculatePay();   9.    System.out.println(e.printDetails());  10.  }  11.} Only One: 1) Line 102) Line 113) Line 74) Line 85) NeverAnswer:3问题:准确的说,是不是应该第六行的时候,第三行创建的对象的内存空间就符合垃圾回收器手机标准了呢?

解决方案 »

  1.   

    1.问:第四行 aobj = bobj 时,第一行创建的对象的内存空间难道不符合垃圾收集器的收集标准么? 
    当然符合.
      

  2.   

    Question 1:给对象赋予了空值null,以下再没有调用过;aobj = bobj;  --> aobj and bobj currently are not set to null.
      

  3.   

    问题一
    第4行执行结束后内存空间符合垃圾收集器的收集标准(即第5行)
    Object aobj = new Object ( ) ; 
    此时aobj已经指向了bobj所对应的空间,而第一行new出来的对象可以回收了。
      

  4.   

    第一个问题
    感觉4、7行都符合
    因为第4行执行后,已经没有引用指向aobj了,这不就符合了垃圾回收的条件么?