【发布时间】:2014-05-25 17:47:07
【问题描述】:
我已经 ssh'ed 到一台机器并正在运行一个 java 程序。退出一段时间后,我得到一个堆转储并将其发送到文件 java_pid28356.hprof 我如何仅使用命令行工具从该文件中读取以查找导致转储的原因?
【问题讨论】:
我已经 ssh'ed 到一台机器并正在运行一个 java 程序。退出一段时间后,我得到一个堆转储并将其发送到文件 java_pid28356.hprof 我如何仅使用命令行工具从该文件中读取以查找导致转储的原因?
【问题讨论】:
less %DUMP_FILE_DIR%/java_pid28356.hprof
您也可以尝试 ParseHeapDump.sh - eclipse 内存分析器的一部分(您可以用谷歌搜索它,但为了方便起见,我在下面发布了脚本)
#!/bin/sh
#
# This script parses a heap dump.
# Adjust the path to java, version 5 or later, and the heap size as required.
# Suitable for 64-bit and 32-bit Java, but a 64-bit Java is required
# for larger heap sizes.
#
# Usage: ParseHeapDump.sh <path/to/dump.dmp.zip> [report]*
#
# The leak report has the id org.eclipse.mat.api:suspects
# The top component report has the id org.eclipse.mat.api:top_components
#
java -Xmx3072M -jar "`dirname "$0"`"/plugins/org.eclipse.equinox.launcher_1*.jar -consoleLog -application org.eclipse.mat.api.parse "$@"
【讨论】:
:^A^@^@^@^@^@^@^@ ^@^@^?_|G<FF><F0>;^A^@^@^@^@^@^@^@ ^@^@^?_|Gz0<^A^@^@^@^@^@^@^@^U^@^@^?_|FESCgetAndAddLong^A^@^@^@^@