0

在 Java 8 中,我使用以下代码来分配和管理堆外内存。

try {
    String text = "test";
    buffer.put(text.getBytes(StandardCharsets.UTF_8));
} finally {
    // Release the memory
    Optional.of(buffer).map(DirectBuffer.class::cast).map(DirectBuffer::cleaner).filter(Objects::nonNull).ifPresent(Cleaner::clean);
}

这将导入类 sun.misc.Cleaner 和 sun.nio.ch.DirectBuffer;这在 Java 16 中不可用。在 Java 16 下,我需要使用外部内存 API,如下所示,但是该 API 在 Java 8 中不可用。

try(MemorySegment s = MemorySegment.allocateNative(128))
{
    //...
}

有没有办法分配堆外内存并使我的源代码与 Java 8 和 16 兼容?

4

0 回答 0