3

我试过这个简单的命令:

 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
4

2 回答 2

4

让大页面在 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。

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

于 2014-06-16T14:59:00.233 回答
-1

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

于 2014-06-16T13:40:02.757 回答