Cleaner cleaner
时间: 2023-11-13 21:05:25 浏览: 143
Cleaner
Cleaner 是 JDK 内部的一个类,用于在对象被垃圾回收时执行一些清理操作。Cleaner 类是在 JDK 9 中引入的,并且只能被 JDK 内部使用,不能直接在应用程序中使用。
在 JDK 9 之前,如果需要在对象被垃圾回收时执行一些清理操作,一般可以使用 finalize() 方法来实现。但是 finalize() 方法的执行时机是不确定的,而且可能会导致性能问题。Cleaner 类提供了一种更可靠、更高效的清理机制,它可以保证清理操作在对象被垃圾回收时立即执行,从而避免了 finalize() 方法的问题。
在 DirectByteBufferUtil 类中,我们使用反射来获取 DirectByteBuffer 对象内部的 Cleaner 对象,并调用其 clean() 方法来释放堆外内存。这样做的好处是可以保证及时释放堆外内存,并且不需要关心具体的清理时机。Cleaner 类的工作原理是,它会注册一个本地线程清理器(Local Thread Cleaner),当对象被垃圾回收时,清理器会在本地线程上执行清理操作,从而保证清理操作的及时性和可靠性。
阅读全文