查找 JVM 崩溃的原因

Finding the cause of a JVM Crash

将近两周,我们面向 public 的机器的 jvm 几乎每天都会崩溃,有时甚至更多,并出现内存不足错误 当我查看 hs_err_pid24100.log 时,我看到了这条消息

Java运行时环境内存不足,无法继续....

我也看到了一个当前线程 "C2 CompilerThread0" 但我无法解释它是如何产生的。

我以 link 的形式提供完整的转储文件。在确定去哪里时是否有任何既定指南可遵循 开始查看以找出此问题的原因或如何解决它 http://tinyurl.com/jr7bhee

您有一台 12 GB 的机器,但是您将 JVM 变大了

-XX:PermSize=4096M ... -Xms4096m -Xmx10065m

仅 perm gen 和堆就有 14 GB,再加上 1-2 GB 用于 JVM 和 OS,以及其他程序,您实际上总共使用了 26-28 GB。

所以它 运行 内存不足。

Memory: 4k page, physical 12582388k(1970656k free), swap 16776692k(7036k free)

我建议

  • 为您正在使用的应用程序安装至少 32 GB 的内存 运行 或
  • 使 perm gen 更小,例如 1 GB,最大堆为 4 - 8 GB,并退出您机器上的所有其他程序,它可能适合您拥有的 12 Gb。