繁体   English   中英

为什么我的 Java 应用程序不能在 Red Hat Linux 中使用大页面?

[英]Why doesn't my Java application work with huge pages in Red Hat Linux?

我试过这个简单的命令:

 java -XX:+UseLargePages -Xms2g -version

我收到错误:

Java HotSpot(TM) 64-Bit Server VM warning: Failed to reserve 
shared memory (errno = 12).

但是没有大页面它可以正常工作。

内存信息输出:

HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

在 Linux 上运行大页面需要做两件事(请参阅Oracle 的文档) 1) 可用共享内存的最大数量 shmmax 需要大于 JVM 堆大小。 2) 需要启用巨大的页面并且足够可用以支持 JVM 堆。

shmmax 的运行时设置位于 /proc/sys/kernel/shmmax。

大页数的运行时设置位于 /proc/sys/vm/nr_hugepages

如果您希望这些设置在重新启动后保持不变,则需要通过 sysctl 进行设置。

因此,如果您指定 4GB 的最大堆,则 shmmax 需要 >= 4GB,并且对于 2MB 页面,nr_hugepages 需要 >= 2K。

您的命令行还应指定最大堆大小。

它不起作用,因为您的大页面只有 2MB (2048 kB),而您的堆大小至少为 2 GB。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM