2

我知道这-XX:+HeapDumpOnOutOfMemoryError将在 OutOfMemoryError 上启用堆转储。

线程转储有类似的东西吗?我需要这个以防服务器上发生错误 - 发生错误时我无权访问进程本身

4

1 回答 1

3

引发 OutOfMemoryError 的确切执行点非常随机(除非您有一个单线程应用程序),所以我认为在 OOM 上获取线程转储没有太大意义。如果它是“Java 堆空间”类型的 OOM,至少这是正确的,但也可能适用于其他类型的 OOM 错误。

无论如何,看看这个较早的帖子解决了同样的问题。

然而,解决 OOM 错误的更好方法是使用Eclipse Memory Analyzer Tool检查堆转储。它通过将对象图转换为所谓的支配树来帮助您识别内存泄漏。这种结构揭示了对象之间的保持活动依赖关系,因此很容易识别负责保留最大内存块的那些(参见Shallow vs. Retained Heap)。

于 2013-03-03T23:46:01.427 回答