![什么原因导致 JBoss 占用比分配的多 4 GB 的内存?](https://linux22.com/image/510842/%E4%BB%80%E4%B9%88%E5%8E%9F%E5%9B%A0%E5%AF%BC%E8%87%B4%20JBoss%20%E5%8D%A0%E7%94%A8%E6%AF%94%E5%88%86%E9%85%8D%E7%9A%84%E5%A4%9A%204%20GB%20%E7%9A%84%E5%86%85%E5%AD%98%EF%BC%9F.png)
启动行的相关部分:java -server -Xms10G -Xmx10G -XX:PermSize=1G -XX:MaxPermSize=1G
这个实例最终占用了 16GB 内存和 10GB 交换空间,直到服务器崩溃。
您知道是什么原因造成此情况吗?
这是唯一在具有 16GB RAM 和 10GB 交换空间的 RedHat 系统上运行的主要应用程序。
答案1
我的猜测可能是失控线程,实际上可能更好的堆栈溢出是关于如何分析 Java 应用程序的内存使用情况并查找内存泄漏。
请记住,选项-Xms
和-Xmx
仅适用于堆。还有其他东西占用内存,例如线程堆栈等。所以也许有失控的线程?
您可能需要研究 ulimit 以限制此应用程序可以使用的内容,并开始使用 Nagios 之类的程序在内存使用失控时提醒您。您以 root 身份运行 jvm?