关于Java中方法中创建对象?

laojiadingxi 发布于 2013/12/14 14:38
阅读 254
收藏 0

如果在一个方法中创建对象,离开这个方法后,此方法创建的那个对象是否在堆中存活?例如如下代码:

public void test(){

    A a=new A();//如果调用完这个方法,那么在堆中必定创建了一个对象,如果离开这个方法作用域,a对象还在吗?

}

加载中
0
huan
huan
除非发布到外部,否则就无法访问了,会在下次垃圾收集中清除
0
Timco
Timco
局部变量a无效,而对象的销毁取决于gc
laojiadingxi
laojiadingxi
回复 @惉惉自喜 : 谢了,我去查一下gc机制
Catelyn
Catelyn
gc触发是不定时的,去看看jvm内存模型的相关博客吧!
laojiadingxi
laojiadingxi
那gc是什么时候触发,一离开作用域就触发?还是等堆内存满了就触发?
0
Callen
Callen
对象还会在堆中,不过因为局部变量a随着函数的结束会被清除出栈,所以对象就失去了引用a,那么当JAVA虚拟机检测到对象没有引用的时候便会回收它。
laojiadingxi
laojiadingxi
谢谢了,大概知道什么意思了
0
淘淘我的小宝宝
淘淘我的小宝宝
a只是在堆中所创建的对象引用,是一个局部变量位于栈中。堆对象的回收依赖于gc算法。
返回顶部
顶部