java - 查找 JVM 崩溃的原因

标签 java multithreading out-of-memory

近两周以来,我们面向公众的机器的 jvm 几乎每天都会崩溃,有时甚至会因内存不足错误而崩溃 当我查看 hs_err_pid24100.log 时,我看到了这条消息

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

我还看到了当前线程“C2 CompilerThread0”,但我无法解释它是如何产生的。

我提供完整转储文件作为链接。是否有任何既定指南可供遵循来确定去哪里 开始找出这个问题的原因或如何解决它 http://tinyurl.com/jr7bhee

最佳答案

您有一台 12 GB 的机器,但是您使 JVM 更大了

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

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

所以内存不足。

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

我建议

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

关于java - 查找 JVM 崩溃的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35995984/

相关文章:

java - 创建多个AsyncTask

android - 在 Android 中发布巨大的 JSON 对象

python - 竞争条件如何导致 p[0] 在这里为 None ?

java - Spring Security 记住我注销问题

java - 如何将 java 对象转换为它自己的 getComponentType?

java - HTML 格式的用户注册表 - 不存在必需的字符串参数 'user_id'

C++清除队列和线程安全

memory-leaks - 我有很多未使用的内存分配给 .net

scala - 无法设置 `sbt start`的内存设置

java - 对空结果集的非法操作 - 如何检查它是否为空?