public final class MemoryCleaner extends Object
为了解决这些问题,释放存储在 Java 堆外的 ColumnVector 资源的主要方式应该是通过引用计数。由于内存泄漏对于长期运行的守护进程来说非常糟糕,因此这旨在作为一种备用方案。
当 ColumnVector 首次分配堆外资源时,应将其与此以及 Cleaner 实例一起注册。Cleaner 实例不应与 ColumnVector 有任何直接链接,以免阻止 ColumnVector 被垃圾回收。它将在内部使用 WeakReferences 来了解何时发生了资源泄漏。ColumnVector 可以保留对 Cleaner 实例的引用,并在分配新资源时更新它,或使用它来释放它持有的资源。一旦 ColumnVector 的引用计数达到 0,资源就会被释放。稍后,Cleaner 本身也会被释放。
修饰符和类型 | 类和说明 |
---|---|
static class |
MemoryCleaner.Cleaner
即使发生内存泄漏,也可用于清理向量资源的 API
|
构造器和说明 |
---|
MemoryCleaner() |
修饰符和类型 | 方法和说明 |
---|---|
static boolean |
configuredDefaultShutdownHook()
检查是否配置了在关机时检查泄漏的关机钩子。
|
static void |
register(CompiledExpression expr, MemoryCleaner.Cleaner cleaner) |
static Runnable |
removeDefaultShutdownHook()
从 Java 默认 Runtime 中取消注册默认关机钩子,然后返回相应的关机 Runnable。如果想在自定义的关机钩子管理器中注册默认关机 Runnable,而不是 Java 默认 Runtime,应该先使用此方法移除它,然后再添加它
|
public static boolean configuredDefaultShutdownHook()
public static Runnable removeDefaultShutdownHook()
public static void register(CompiledExpression expr, MemoryCleaner.Cleaner cleaner)
版权所有 © 2025。保留所有权利。