2

我有一个 Java 应用程序,它正在获取 OutOfMemoryError,用于堆空间。我启用了 -XX:HeapDumpOnOutOfMemoryError,并获得了生成的 hprof 文件。

然而,转储显示堆、permgen 等中还有大量空间。我相信这可能是单个请求大量内存(例如 1 GB 数组)的原因,该请求失败,因此不会t 出现在转储中。

基本上,我想在抛出 OOM 时查看导致 OOM 的线程堆栈。

从 hprof 转储中可以实现吗?

4

1 回答 1

4

它不在转储中,因为它在 OutOfMemoryError 中。如果您设法捕获并打印该错误的堆栈跟踪,它将告诉它发生在哪里。

于 2011-07-27T21:46:19.477 回答