TogetherJ不是又被赋给temp了吗? 1040xFFFFFFF4

解决方案 »

  1.   

    我觉得应该是运行到105行会出现一个垃圾收集.-12的二进制补码是:0xFFFFFFF4
      

  2.   

    是2个吧,String是一个immutable类,这表明在102的地方会出现一个可以回收的对象。你能肯定答案吗?
      

  3.   

    答案一定是一个啊,105 product = null;这意味着product将被回收,也只有她。
    把对象付给变量,在规范里面清楚的写着,只是简单的把对象指向了对象,(即内存地址),对变量重新付值,并不以为着回收对象,当两个变量引用同一个对象时,其中一个被另外付值,他原先指向的对象当染不能被回收。您明白了吗?也
      

  4.   

    顶楼的兄弟!
    哪里能搞到scjp的资料阿!
      

  5.   

    http://personal.monline.com.cn/feyo/bbs/list.asp?boardid=19这里有SCJP的资料
      

  6.   

    只有一个!
    只有当对应已经没有引用时才会被收集,
    而105处虽然product已经被付为null,但对象还有temp这个引用,因此不会被收集
      

  7.   

    明明应该是四个,String newProduct = new String("JCertify")
    机器产生一个string类"JCertify",然后调用string的构造方法之一:new String(String original)   看,这不产生了一个可回收的对象
      

  8.   

    一个就一个,new的对象没有变量指向就over了。
      

  9.   

    是一个被回收 : new String("JCertify")
    String("eMonogram")被newProduct引用后,String("JCertify")被回收
    而String("TogetherJ")被temp引用."JCertify"这些字符串的确是生成的对象,但是这种直接指定的字符串比较特别,被存放在常量池中,不般不被释放.
      

  10.   

    当然是一个!
    jvm垃圾回收的机制是这样的:
    当内存中分配的一块内存区域没有被任何变量引用时,它将被垃圾回收!103分配的内存在105行还被temp引用,所以不回收!
    如果加上temp = null;
    则将被回收!