Java中的对象销毁
从下面的示例中,在案例1中,对象是在类级别创建的,在案例2中,对象是在方法级别创建的 我的理解是,在案例2中,一旦方法完成执行,对象就会从堆内存中移除。我的理解正确吗 现在我的问题是,在这两种情况下,什么时候将对象从堆内存中删除,在不同的上下文中使用哪种方法是有效的Java中的对象销毁,java,Java,从下面的示例中,在案例1中,对象是在类级别创建的,在案例2中,对象是在方法级别创建的 我的理解是,在案例2中,一旦方法完成执行,对象就会从堆内存中移除。我的理解正确吗 现在我的问题是,在这两种情况下,什么时候将对象从堆内存中删除,在不同的上下文中使用哪种方法是有效的 public class A() { ClassB obj = new ClassB(); // Case 1 private void method() {
public class A()
{
ClassB obj = new ClassB(); // Case 1
private void method()
{
ClassB obj = new ClassB(); // Case 2
}
}
可能取决于Java VM实现,但通常只有在堆被填满/饱和后才运行GC。所以不,很可能不会立即删除它。在您的程序中。您只写了一行,其中只完成了声明和初始化。还有一件事我想问的是,它是
类
,方法
或构造函数
private example(){ //what is example ?? Is it class or method or constructor ?
ClassA obj = new ClassA();
}
但是我想告诉你,在
}
(结束)执行完成后,ClassA obj将有资格获得gc。但执行gc时收集并销毁对象完全取决于jvm。当垃圾收集器决定这样做时,它将被删除。用几句话来解释垃圾收集在java中的工作原理有点复杂,您可以从外部源中了解它,也可以不必担心它,因为您真的不需要代码>对象符合垃圾收集条件。垃圾收集可以决定如何最好地删除所有垃圾,并进行清理。与显式分配、释放的C相比,这可以表现得更好。。。。以及您选择的GC。低暂停采集器通常会在后台采集。。。在堆满之前。