我们有一个Java应用程序,jdk是7up75 ... Xms设置为1 GB,Xmx为3 GB。我们使用JConsole来监视JVM,我们发现JVM的使用率在不断增加......我们启用GC和GCInterval是30分钟。在周末,1-2个用户使用应用程序,但是当我们在星期一检查JVM使用情况时早上,我们可以看到几乎相同或更高的JVM使用率,而不是周五晚上。目前我们每1周就会遇到内存不足的问题。仅在上个月开始面对此问题。同样的系统在过去的两年里工作正常,没有任何问题。现在DB几乎翻了一倍...... 任何人都可以提出任何暗示或建议。谢谢。
答案 0 :(得分:1)
正如评论所说,这听起来像是内存泄漏的典型症状。在您花时间寻找其他可能的原因(没有任何特定原因的证据)之前,建议您使用内存分析器来查看内存泄漏理论是否有效。
..我想知道内存泄漏是否是问题,为什么系统运行了两年没有任何堆错误。
这并不意味着它不是内存泄漏。
我们唯一可以肯定地说,某事已经改变了。这可能是很多事情:
目前APP和DB服务器都在同一台机器上... 8GB RAM和4核心cpu ..如果我们将DB分成另一台服务器怎么办?
这不会改变JVM的内存使用情况。它可能允许您运行具有更大堆的JVM,但如果问题是(我们怀疑)您有内存泄漏,那么增加堆大小就像在受感染的伤口上放置一个绑带。它并没有解决真正的问题。病人还在死。