[英]Unicode working on Windows but not Red Hat Linux : Java
[英]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.