gpt4 book ai didi

Java 进程常驻内存

转载 作者:行者123 更新时间:2023-11-30 23:49:53 26 4
gpt4 key购买 nike

我是 Java 内存问题的新手,在调试 Java 进程的内存使用时遇到问题,需要您的帮助。根据“top”,java 进程占用 8G 常驻内存和 9.4G 虚拟内存。这对于进程所做的事情来说太多了,我想检查为什么它正在消耗内存。因此,我使用 jmap 进行了堆转储(没有“live”选项,因为它可能会触发 GC),发现只有 100MB 的 Activity 对象存在,并且有 1.5G 的无法访问的对象。那么剩下的6G内存去哪儿了呢?我应该检查哪些其他类型的非堆内存?另外,你能帮我用任何工具/unix 命令来找出这个问题吗?

JVM 参数:-Xms 为 2G,-Xmx 为 8G

如果我应该在此处添加更多信息以便为您提供更多背景信息,请告诉我。

提前致谢。

最佳答案

您告诉 Java 它可以占用 8Gb,它确实做到了。也许您将 JVM 内部的内存使用量暂时增加到 8Gb;然后它收集垃圾并丢弃了 6.4Gb 的无法访问的对象。但是 JVM 不会将该内存返回给系统。

但是,当您用完机器上的物理内存时,这些 6.4Gb 未使用的页面将被换出。您只是还没有用完您机器中的内存,所以它们仍然是 RSS 的一部分。至少,这是我有根据的猜测。

另请参阅:Is there a way to lower Java heap when not in use?

关于Java 进程常驻内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548956/

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