我知道-XX:+HeapDumpOnOutOfMemoryError
将在发生 OutOfMemoryError 时启用堆转储。
线程转储有类似的东西吗?我需要这个以防服务器上发生错误 - 当错误发生时我无权处理本身
最佳答案
引发 OutOfMemoryError 的确切执行点是非常随机的(除非您有单线程应用程序),所以我认为在 OOM 时获取线程转储没有太大意义。至少如果是“Java 堆空间”类型的 OOM,情况是这样,但对于其他类型的 OOM 错误也可能如此。
无论如何,看看this older post解决同样的问题。
然而,解决 OOM 错误的更好方法是使用 Eclipse Memory Analyzer Tool检查堆转储。它通过将对象图转换为所谓的 dominator tree 来帮助您识别内存泄漏。 。这种结构揭示了对象之间的保持 Activity 依赖关系,因此很容易识别负责保留最大内存块的对象(请参阅 Shallow vs. Retained Heap )。
关于java - 如何在内存不足错误时进行线程转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15191999/