问题描述
我正在尝试分析一个应用程序,该应用程序一次又一次地因堆内存不足而终止。
应用程序开始于:
export JAVA_OPTS="-xms256M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/our_app_here/heapdump.dmp"
在应用程序完全死亡之前,我在日志中看到多个这样的条目:
2021-01-11 07:17:05,039 [ERROR] [User=xxxxx] [class-name-here] Exception occured: java.lang.OutOfMemoryError: Java heap space
这些错误发生在 try-catch 中,它们显然被捕获并记录下来。 令人惊讶的是,该应用程序继续运行,但很快就崩溃了。
为什么在内存不足的情况下 JVM 不写入任何堆转储?我认为“HeapDumpOnOutOfMemoryError”选项就是为了触发那个。这样的堆转储对于找出我们的内存泄漏所在的位置不是必不可少的,但如果不是必需的,那将是最有帮助的。
这是在 SLES 12 上使用 Java 8 (AdooptOpenJDK 8u252),并且肯定有足够的磁盘空间用于堆转储!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)