系统相关
首页 > 系统相关> > 为什么Java应用程序不能在Linux Red Hat中处理大页面?

为什么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