如何初始化本地变量才妥当?将本地变量初始化是一种良好的编码习惯,我的习惯是对非基本类型置为null,如下:private void foo() {
Cat cat = null;
.
.
.
cat = new Cat();
}我现在有一点担心,据我所知,java中通常给一个对象赋值null以明确地告知JVM可以对该对象gc,如果这样,上面的初始化代码是不是不够安全?是不是gc不可能发生在中间那些步骤运行的时刻?也就是说在变量cat的作用域里,最终cat不是null,gc不会对其回收?各位都是怎么初始化本地变量的?谢谢。

解决方案 »

  1.   

    java中通常给一个对象赋值null以明确地告知JVM可以对该对象gc
    _____________________________________________________________
    是真的吗?
      

  2.   

    这样初始化是对的,看情况而定。而你说的gc是错的,cat是个变量,不是对象,gc是回收没有引用的对象。
      

  3.   

    Cat cat = null;
    .
    .
    .
    cat = new Cat();
      

  4.   

    zhmt(不爽你就用分砸我!!!) 回答的对。没有new之前,是不会分配内存空间的,更不存在gc。
      

  5.   

    出了void foo() cat就不存在了
      

  6.   

    出了void foo() cat就不存在了
    此时如果没有其他指向Cat对象的引用,gc会在适当的时候收回Cat分配的空间
      

  7.   

     回复人:yingge(盼胖) ( 三级(初级)) 信誉:100  2006-07-18 12:57:00  得分:0

    gc回收的是堆中的对象,不是回收栈中的引用
    ==========================================================================
    兄弟,从哪些资料里可以找到java堆、栈的分配情况资料?还有个问题,栈里的东西不被回收,岂不是内存很快被耗尽?当然,肯定不是这样,我就是一问。