为什么Java应用程序不能在Linux Red Hat中处理大页面?
作者:互联网
我试过简单的命令:
java -XX:+UseLargePages -Xms2g -version
收到错误:
Java HotSpot(TM) 64-Bit Server VM warning: Failed to reserve
共享内存(errno = 12).
但是没有大页面,它可以正常工作.
meminfo输出:
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
解决方法:
在Linux上运行庞大的页面需要做两件事(请参阅Oracle’s Documentation)
1)可用的最大共享内存shmmax必须大于JVM堆大小.
2)需要启用巨大的页面,并且页面足够可用以支持JVM堆.
shmmax的运行时设置位于/ proc / sys / kernel / shmmax.
大页面数的运行时设置位于/ proc / sys / vm / nr_hugepages
如果您希望这些设置在重启后仍然存在,则需要通过sysctl进行设置.
因此,如果您指定4GB的最大堆,则shmmax必须为> = 4GB,而对于2MB的页面,nr_hugepages必须为> = 2K.
您的命令行还应指定最大堆大小.
标签:memory,jvm,huge-pages,java 来源: https://codeday.me/bug/20191029/1960032.html