我在tomcat 7.0.55中部署了一个应用程序进行测试 . 我想捕获是否正在发生“HeapDumpOnOutOfMemoryError” . 以下是我的JVM参数 .
JAVA_OPTS =“ - server -Xms512M -Xmx2048M -XX:PermSize = 256m -XX:MaxPermSize = 512m -XX:UseConcMarkSweepGC -XX:UseParNewGC -XX:ThreadStackSize = 512 -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = / apps / dumps /”
我在目录下看不到任何文件 . 它是在目录下创建文件还是我手动创建要追加的文件?
2 回答
您可以按如下方式使用它:
-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath =
如果您知道进程ID,也可以使用jmap手动生成内存映射:
jmap -J-d64 -dump:format = b,file =
您可以使用JHat来分析转储 .
jhat“转储文件的路径” .
默认情况下,堆转储是在VM的工作目录中名为java_pid.hprof的文件中创建的,如上例所示 . 您可以使用-XX:HeapDumpPath =选项指定备用文件名或目录 . 例如-XX:HeapDumpPath = / disk2 / dumps将导致在/ disk2 / dumps目录中生成堆转储 .
检查写入已配置文件夹
/apps/dumps/
是否是权限问题 .供参考 - https://blog.gceasy.io/2015/08/14/how-to-capture-heap-dump-jmap/ https://blogs.oracle.com/LuzMestre/entry/how_to_collect_a_heap