我刚刚找到了一个JVM配置,其中配置的大页面的大小要比为JVM分配的堆大小大得多。
下面我添加的配置是针对Websphere Application Server的,但是对于使用大页面的任何其他Java应用程序来说,问题都是一样的。通常,使用-Xlp (IBM知识中心-优化Linux系统)开关的IBM和使用-XX:+UseLargePages (Oracle: Java对大内存页的支持)的Oracle都启用了大页面。
当前配置显示
vm.nr_hugepages = 4096
Hugepagesize: 2048 kB (from meminfo)
-Xmx 6144 (for java process)JVM从启用-Xlp开始。
我假设通过vm.nr_hugepages,8GB是固定的,因此对其他进程不可用。但是Java只要求6GB的Heap。
有人能解释一下其他2GB的情况吗?
提前感谢!
发布于 2016-12-21 13:04:31
其余2GB的巨大页面被固定在连续的实际内存中,等待应用程序使用它们( JVM配置本身不会使堆增长到足以使用剩余的巨大页面)。除了潜在的调用者,其他任何东西都无法使用这种记忆。
大型页面内核选项 抱页 定义在启动时配置在内核中的持久巨大页数。默认值为0。只有在系统中有足够的物理上连续的空闲页时,才有可能分配(或释放)巨大的页面。此参数保留的页不能用于其他目的。
在以后的Linux版本中,有一个“透明的巨大页面”选项,试图通过将不知情的应用程序移动到任何可能存在的空闲空间中来解决其中的一些问题,但它似乎没有得到太多的喜爱。
https://stackoverflow.com/questions/41247659
复制相似问题