即使我限制了最大堆空间大小,JVM如何进入/退出分页?

时间:2017-07-19 05:40:23

标签: java jvm

我是Java的新手。

我在用Java实现的分布式框架之上运行一个应用程序。 该应用程序是磁盘和网络I / O密集型作业。

每台机器有32 GB内存。我为每台机器运行4个工作器,并为每个机器分配7 GB的最大堆空间。总的来说,为JVM保留了28 GB的内存空间。剩下的4 GB是为OS(Cent OS 7)保留的。没有重型程序同时运行。

令人惊讶的是,当我通过 dstat 监控系统资源使用情况时,会发生大量的分页。

怎么可能?我限制了JVM的内存使用量!

感谢您的帮助,谢谢

1 个答案:

答案 0 :(得分:2)

JVM不会分页内存。操作系统。操作系统如何以及何时选择要驱逐的页面取决于配置。 并且仅设置-Xmx 可以配置JVM中托管堆的上限。无论何时执行IO,它都不会限制文件映射,直接内存分配,本机库或保留在内存中的页面缓存。

所以你没有为JVM“保留”28GB,因为操作系统对此一无所知,而且JVM对其他JVM一无所知。