6

在 outofmemoryerror 上没有得到 java 堆转储:试过这个(one.exe 是我的 java rcp 应用程序):

one.exe -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\Temp

但没有帮助,文件夹路径是可访问的。我什至尝试给出 heap.hprof 之类的名称,但没有结果。有人可以在这里指导我吗?

4

2 回答 2

1

有些抛出的堆溢出并不是真正的溢出,而是计算后直接抛出的。事实上,没有溢出。比如 DirectByteBuffer(使用 allocateMemory)</p>

于 2020-09-24T12:34:37.220 回答
-1

-XX:+HeapDumpOnOutOfMemoryError 命令行选项 如果指定 -XX:+HeapDumpOnOutOfMemoryError 命令行选项,并且如果抛出 OutOfMemoryError,VM 会生成堆转储

上面的这个参数说它会在抛出 OOM 时生成 HeapDump。如果将 JVM 参数传递给 JVM 并且没有生成堆转储,则意味着应用程序尚未遭受 OutOfMemory 条件。如果您需要确认,则获取应用程序的本机 stderr 日志文件以检查应用程序是否遭受任何 OOM?或包含 -verbose:gc jvm 参数并收集详细日志并检查 GC 的最后一个周期以检查 java 堆的空闲字节。

于 2015-04-23T05:36:14.683 回答