如何知道对象何时在 Java 中被释放?

How to know when an object is deallocated in Java?

我想知道什么时候在 Java 中释放对象?

如果Swift里有deinit之类的东西,我可以在那里释放一些资源。 例如)

deinit {
     myResource1.dispose()
     myResource2.release()
     someOtherResource.close()
     ....
}

在Java中是不是一个不好的做法,以至于我不得不另辟蹊径?

具体来说,我想知道列表视图中的一行何时消失。

与构造函数不同,Java 中没有析构函数或 de-init。当实例不再可访问时(不再引用对象),它会自动由 JVM 进行垃圾收集。

您可以尝试在 Class 中实现 finalize() 方法。

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

员工class:

class Employee {
    public int id;

    public Employee(int id) {
        // TODO Auto-generated constructor stub
        this.id = id;
    }

    @Override
    protected void finalize() throws Throwable {
        // TODO Auto-generated method stub
        super.finalize();
        System.out.println(this.id + " Garbage Collected");
    }
}

主类:

public class TestMain  {
public static void main(final String[] args) throws ParseException {
    Employee p = new Employee(111);
    Employee p2 = new Employee(222);
    p = null;
    p2 = null;
    System.gc();
}

}

N.B : 虽然不确定即使我们调用 gc() 方法是否会调用垃圾收集器