我已经在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 = /应用/转储/"
我没有在目录下看到任何文件。它是在目录下创建文件还是我手动创建要追加的文件?
答案 0 :(得分:0)
您可以按照以下方式使用它:
-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目录中生成堆转储。
答案 1 :(得分:0)
检查写入已配置文件夹/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