在 Java 中分配堆外内存时(例如通过直接缓冲区或 JNI native 代码),如果 JVM 使用 -XX:+UseLargePages ,分配的内存是否会由大页支持?
最佳答案
不,HotSpot JVM uses一个简单的 libc malloc
调用,为直接 ByteBuffer 分配内存。
但是,如果您将标准系统分配器替换为 jemalloc 等。 - 您将能够configure malloc 在可用时使用大页面。
将大页用于直接 ByteBuffer 的另一个选项是在 hugetlbfs 上创建一个文件。文件系统,然后在 Java 中将其映射为 MappedByteBuffer
.
关于Java堆外内存和大页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59620064/