Java JVM内存使用率不断增加

Java JVM内存使用率不断增加,java,heap-memory,jvm-crash,Java,Heap Memory,Jvm Crash,我们有一个Java应用程序,jdk是7up75…Xms集是1GB,Xmx是3GB。我们使用JConsole监视JVM,发现JVM的使用率在不断增加……我们启用了GC,GCInterval为30分钟……在周末,应用程序被1-2个用户使用,但当我们在周一早上检查JVM的使用情况时,我们仍然可以看到JVM的使用率几乎与周五晚上相同或更高。目前,我们每1周都会遇到内存不足错误。上个月才开始面对这个问题。同样的系统在过去的两年中运行良好,没有任何问题。。现在DB几乎翻了一倍。。。 任何人都可以给出任何提示

我们有一个Java应用程序,jdk是7up75…Xms集是1GB,Xmx是3GB。我们使用JConsole监视JVM,发现JVM的使用率在不断增加……我们启用了GC,GCInterval为30分钟……在周末,应用程序被1-2个用户使用,但当我们在周一早上检查JVM的使用情况时,我们仍然可以看到JVM的使用率几乎与周五晚上相同或更高。目前,我们每1周都会遇到内存不足错误。上个月才开始面对这个问题。同样的系统在过去的两年中运行良好,没有任何问题。。现在DB几乎翻了一倍。。。
任何人都可以给出任何提示或建议吗..提前谢谢..

正如评论所说,这听起来像是内存泄漏的典型症状。在您花费时间寻找其他可能的原因(没有任何特定原因的证据)之前,建议您使用内存分析器查看内存泄漏理论是否有效

…我想知道是否内存泄漏是个问题,为什么系统运行了两年没有任何堆错误

这并不意味着它不是内存泄漏

我们唯一可以自信地说的是,有些事情已经改变了。可能有很多东西:

  • 对软件或库的更改
  • 对JVM的更改
  • 更改系统中的信息量(例如内存信息)
  • 更改您/您的用户使用系统的方式
  • 其他我没有想到的事情
另外,目前应用程序和数据库服务器都在同一台机器上…8GB RAM和4核cpu…如果我们将数据库拆分到另一台服务器上会怎么样


这不会改变JVM的内存使用情况。它可能允许您使用更大的堆运行JVM,但是如果问题是(正如我们所怀疑的)内存泄漏,那么增加堆大小就像在受感染的伤口上贴绷带一样。这并不能解决真正的问题。患者仍然死亡。

听起来像是内存泄漏。你所提供的肯定没有其他人能告诉你。你也可以打电话给一个机械师,说“我的车坏了,怎么了?”。是时候进行堆转储和eclipse内存分析器DIMO414和Radai了。。。。谢谢..我想知道是否内存泄漏是问题所在,为什么系统运行了两年没有任何堆错误..目前应用程序和DB服务器都在同一台机器上..8GB RAM和4核cpu..如果我们将DB拆分到另一台服务器上会怎么样?..@你给我们的一切都是可能的,这让我们感到羞愧。对一个我们看不到或无法检查的系统“好奇”是不会有任何结果的。问一个具体的问题,你就会得到具体的答案。在此之前,我们只能提供盲目猜测。感谢Stephen C的详细回复…你能详细说明我如何分析内存泄漏…你能建议一些最好的工具/软件和分析方法…提前谢谢…正如你所说,我们已经更改了JVM…之前是32位jdk6u24,3个月前我们更新为64位jdkup75…过去3-4个月并发用户数量也有所增加…在con使用率为30-40,而不是60-70之前…有任何提示吗…?正如您所说,我们已经更改了JVM…以前是32位jdk6u24,3个月前我们更新为64位jdkup75…过去3-4个月并发用户数量也有所增加…在con使用率为30-40之前,现在是60-70…有任何提示吗…?具体更改与此无关。事实是>>所拥有的东西>>可能有很多可能的工具来查找内存泄漏。从IDE和插件支持的工具开始。或者读一下: