gpt4 book ai didi

java - 进程内存与堆——JVM

转载 作者:IT王子 更新时间:2023-10-29 00:11:53 24 4
gpt4 key购买 nike

我们在 tomcat 服务器上部署了一个 Web 应用程序。我们运行了某些预定的作业,之后堆内存达到峰值并稳定下来,一切似乎都很好。然而,系统管理员提示内存使用量(Linux 上的“最高”)随着计划作业的增加而不断增加。堆内存和CPU内存之间的相互关系是什么?它可以由任何 JVM 设置控制吗?我使用JConsole 来监控系统。
我通过 JConsole 强制垃圾收集,堆使用率下降了,但是 Linux 上的内存使用率仍然很高,而且从未减少。

有什么想法或建议会很有帮助吗?

最佳答案

JVM进程分配的内存和堆大小是不一样的。在 JVM 分配的空间没有实际减少的情况下,使用的堆大小可能会下降。 JVM 必须接收到指示它应该缩小堆大小的触发器。正如@Xepoch 提到的,这是由 -XX:MaxHeapFreeRatio 控制的。

However the system admin is complaining that memory usage ('top' on Linux ) keeps increasing the more the scheduled jobs are [run].

那是因为您很可能存在某种内存泄漏。当系统管理员看到进程慢慢占用越来越多的空间时,他们往往会提示。

Any ideas or suggestions would of great help?

你看过线程数了吗?您的应用程序是否创建了自己的线程并将它们发送到死锁并永远空闲等待?您是否与任何可能使用 JNI 的第三方 API 集成?

关于java - 进程内存与堆——JVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893192/

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