Dhr*_*tel 6 java garbage-collection
我已经读过在下列情况下该对象有资格进行垃圾收集.
但是,无论如何都要确定垃圾收集器是否收集了符合垃圾收集条件的对象?
你可以实现该Object#finalize()方法
public class Driver {
public static void main(String[] args) throws Exception {
garbage();
System.gc();
Thread.sleep(1000);
}
public static void garbage() {
Driver collectMe = new Driver();
}
@Override
protected void finalize() {
System.out.println(Thread.currentThread().getName() + ": See ya, nerds!");
}
}
Run Code Online (Sandbox Code Playgroud)
打印
Finalizer: See ya, nerds!
Run Code Online (Sandbox Code Playgroud)
所以你可以在收集之前拦截。javadoc 指出
Finalize 的一般约定是,如果 JavaTM 虚拟机确定任何尚未死亡的线程不再可以通过任何方式访问该对象,则调用它,除非采取了操作通过对其他已准备好最终确定的对象或类进行最终确定。Finalize 方法可以执行任何操作,包括使该对象再次可供其他线程使用;
但是也
对于任何给定的对象,Java 虚拟机绝不会多次调用 Finalize 方法。
| 归档时间: |
|
| 查看次数: |
1452 次 |
| 最近记录: |