如何知道对象何时在 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() 方法是否会调用垃圾收集器
我想知道什么时候在 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() 方法是否会调用垃圾收集器