Java中的对象销毁

Java中的对象销毁,java,Java,从下面的示例中,在案例1中,对象是在类级别创建的,在案例2中,对象是在方法级别创建的 我的理解是,在案例2中,一旦方法完成执行,对象就会从堆内存中移除。我的理解正确吗 现在我的问题是,在这两种情况下,什么时候将对象从堆内存中删除,在不同的上下文中使用哪种方法是有效的 public class A() { ClassB obj = new ClassB(); // Case 1 private void method() {

从下面的示例中,在案例1中,对象是在类级别创建的,在案例2中,对象是在方法级别创建的

我的理解是,在案例2中,一旦方法完成执行,对象就会从堆内存中移除。我的理解正确吗

现在我的问题是,在这两种情况下,什么时候将对象从堆内存中删除,在不同的上下文中使用哪种方法是有效的

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。低暂停采集器通常会在后台采集。。。在堆满之前。