Runnable 传递给 Cleaner.register() 捕获引用时会导致内存泄漏的情况。
此问题的可能来源:
this 本身的 lambda将报告的代码示例:
int fileDescriptor;
Cleaner.Cleanable cleanable = Cleaner.create().register(this, () -> {
System.out.println("adsad");
//this 通过 fileDescriptor 捕获
fileDescriptor = 0;
});
仅当项目或模块的语言级别为 9 或更高时,此检查才会报告。
2018.1 的新功能