Java 9中Cleaner类的用途是什么?
在程序执行过程中创建的对象将由垃圾收集器 (GC)自动删除。当某个对象未被任何线程引用时,并且当JVM确定无法访问该对象时,则可以进行垃圾回收。
Object类具有finalize() 方法,在尝试从堆中删除对象之前,GC 将自动调用该方法。在Java9中,已经不建议使用finalize()方法,并将新类java.lang.ref.Cleaner 添加到垃圾回收管理中。当对象可以进行垃圾回收时,Cleaner 类的对象会自动得到通知。需要通过使用register()方法向清理器对象注册正在垃圾回收的对象。
示例
import java.lang.ref.Cleaner;
public class CleanerTest {
public static void main(String args[]) {
System.out.println("nhooo");
Cleaner cleaner = Cleaner.create();
if(true) {
CleanerTest myObject = new CleanerTest();
cleaner.register(myObject, new State()); // register cleaner }
for(int i = 1; i <= 10000; i++) {
String[] largeObject = new String[1000];
try {
Thread.sleep(1);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
private static class State implements Runnable {
public void run() {
System.out.print("Cleaning action");
}
}
}输出结果
nhooo Cleaning action
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短