【发布时间】:2020-04-24 11:12:14
【问题描述】:
在 Java 中分配堆外内存时(例如通过直接缓冲区或 JNI 本机代码),如果 JVM 使用 -XX:+UseLargePages,分配的内存是否会由大页支持?
【问题讨论】:
标签: java jvm huge-pages off-heap
在 Java 中分配堆外内存时(例如通过直接缓冲区或 JNI 本机代码),如果 JVM 使用 -XX:+UseLargePages,分配的内存是否会由大页支持?
【问题讨论】:
标签: java jvm huge-pages off-heap
不,HotSpot JVM uses 一个普通的 libc malloc 调用来为直接 ByteBuffer 分配内存。
但是,如果您将标准系统分配器替换为例如 jemalloc - 您将能够 configure malloc 在可用时使用大页面。
将大页面用于直接 ByteBuffers 的另一种选择是在 hugetlbfs 文件系统上创建一个文件,然后在 Java 中将其映射为 MappedByteBuffer。
【讨论】: