0

在 Java 中分配堆外内存时(例如通过直接缓冲区或 JNI 本机代码),如果 JVM 使用 -XX:+UseLargePages ,分配的内存是否会由大页面支持?

4

1 回答 1

4

不,HotSpot JVM使用普通的 libcmalloc调用为直接 ByteBuffer 分配内存。

但是,如果您将标准系统分配器替换为例如jemalloc - 您将能够将malloc配置为在可用时使用大页面。

将大页面用于直接 ByteBuffers 的另一种选择是在hugetlbfs文件系统上创建一个文件,然后在Java 中将其映射为MappedByteBuffer.

于 2020-01-07T00:09:41.027 回答