在 outofmemoryerror 上没有得到 java 堆转储:试过这个(one.exe 是我的 java rcp 应用程序):
one.exe -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\Temp
但没有帮助,文件夹路径是可访问的。我什至尝试给出 heap.hprof 之类的名称,但没有结果。有人可以在这里指导我吗?
在 outofmemoryerror 上没有得到 java 堆转储:试过这个(one.exe 是我的 java rcp 应用程序):
one.exe -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\Temp
但没有帮助,文件夹路径是可访问的。我什至尝试给出 heap.hprof 之类的名称,但没有结果。有人可以在这里指导我吗?
有些抛出的堆溢出并不是真正的溢出,而是计算后直接抛出的。事实上,没有溢出。比如 DirectByteBuffer(使用 allocateMemory)</p>
-XX:+HeapDumpOnOutOfMemoryError 命令行选项 如果指定 -XX:+HeapDumpOnOutOfMemoryError 命令行选项,并且如果抛出 OutOfMemoryError,VM 会生成堆转储
上面的这个参数说它会在抛出 OOM 时生成 HeapDump。如果将 JVM 参数传递给 JVM 并且没有生成堆转储,则意味着应用程序尚未遭受 OutOfMemory 条件。如果您需要确认,则获取应用程序的本机 stderr 日志文件以检查应用程序是否遭受任何 OOM?或包含 -verbose:gc jvm 参数并收集详细日志并检查 GC 的最后一个周期以检查 java 堆的空闲字节。