gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:27:49 25 4
gpt4 key购买 nike

我是 Java 新手。

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

每台机器有 32 GB 内存。我每台机器运行 4 个工作进程,并为每个进程分配 7 GB 最大堆空间。因此总共为 JVM 保留了 28 GB 内存空间。剩余的 4 GB 保留给操作系统 (Cent OS 7)。没有并发运行的繁重程序。

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

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

感谢您的帮助,谢谢

最佳答案

JVM 不会调出内存。操作系统确实如此。操作系统如何以及何时选择逐出哪些页面取决于配置。设置 -Xmx only 配置 JVM 内托管堆的上限。当您进行 IO 时,它不会限制文件映射、直接内存分配、 native 库或保留在内存中的页面缓存。

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

关于java - 即使我限制了最大堆空间大小,JVM 如何进行分页调入/调出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45181790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com