如何初始化本地变量才妥当?将本地变量初始化是一种良好的编码习惯,我的习惯是对非基本类型置为null,如下:private void foo() {
Cat cat = null;
.
.
.
cat = new Cat();
}我现在有一点担心,据我所知,java中通常给一个对象赋值null以明确地告知JVM可以对该对象gc,如果这样,上面的初始化代码是不是不够安全?是不是gc不可能发生在中间那些步骤运行的时刻?也就是说在变量cat的作用域里,最终cat不是null,gc不会对其回收?各位都是怎么初始化本地变量的?谢谢。
Cat cat = null;
.
.
.
cat = new Cat();
}我现在有一点担心,据我所知,java中通常给一个对象赋值null以明确地告知JVM可以对该对象gc,如果这样,上面的初始化代码是不是不够安全?是不是gc不可能发生在中间那些步骤运行的时刻?也就是说在变量cat的作用域里,最终cat不是null,gc不会对其回收?各位都是怎么初始化本地变量的?谢谢。
_____________________________________________________________
是真的吗?
.
.
.
cat = new Cat();
此时如果没有其他指向Cat对象的引用,gc会在适当的时候收回Cat分配的空间
?
gc回收的是堆中的对象,不是回收栈中的引用
==========================================================================
兄弟,从哪些资料里可以找到java堆、栈的分配情况资料?还有个问题,栈里的东西不被回收,岂不是内存很快被耗尽?当然,肯定不是这样,我就是一问。