我的看法是将句柄a的值设为null,即不指向任何对象。
从理论上讲,是可以gc了。
不知道大家有什么不同看法?

解决方案 »

  1.   

    本来a是指向刚new的一个Object
    这时把a指向了null,那么Object对象
    没有谁引用了,gc就可以收集它了
      

  2.   

    Object a=new Object();
    表示在内存堆里创建一个对象,由系统显示划分出一段内存,然后加载对象到内存空间,同时
    句柄a内的指针指向那段内存的地址,然后你就可以操纵内存中的对象.
    Object a;
    a=null;
    表示在内存栽里创建创建一个Object类型的句柄(实际是一指针),而将指针的初始值赋为NULL,
    即不指向任何对象.JAVA可以允许空句柄的存在,即一个句柄可以先在载中创建,而没有实际
    的对象实体与之关联;但JAVA不允许孤立的对象实体存在,如果存在,编译器不会报错,
    但程序运行时,这样的对象就归垃及清理器处理了。
      

  3.   

    这么说
    a=null;
    实际上只是将句柄a的值设为null
    并非将a所引用的Object设为null了?
    谢谢各位!
      

  4.   

    是的
    - a是一个引用, 指向内存中的一个对象
    - 这个对象不一定只被a一个引用所指向,比如,它可能正被10个引用所指向
    - a=null只是将a这个引用指向null(可以看作是一个特殊的对象),这样,
      a就不再指向原来的对象了,这时,可能只有9个引用指向原来哪个对象了
    - 如果一个内存中对象失去了所有的引用,则可能会被GCed了原来有10个人都爱林青霞,后来其中一个人转而爱王菲了,这样,只有9个人
    在爱林青霞了嘻嘻
      

  5.   

    多谢hahaha88(忧郁的眼神,稀嘘的胡子喳),
    可惜分已经给过了,有机会再补吧