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

但是,转储表明堆,permgen等中还有足够的空间。我相信这可能是单个请求大量内存(例如1 GB阵列)的原因,该请求失败了,因此不会t出现在转储中。

基本上,我想在引发OOM的那一刻看到导致OOM的线程堆栈。

hprof转储有可能吗?

最佳答案

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

10-06 01:21