一、前言
对于生成或非正常调试JVM环境,由于日志级别、安全控制等条件限制,无法直接看出当前线程对象具体内容,导致无法正常定位调试debug问题,这是我们通过jmap -dump(具体使用示例参见其他文章页面)将但其堆栈内容导出二进制dump离线文件,再copy到开发环境进行分析排查原因。
二、操作步骤
1. 将环境堆栈通过jmap导出堆栈二进制文件,并下载下来进行分析
[root@iZuf6gyurl0fqb87hirq23Z logs]# jmap -dump:live,format=b,file=heap.bytes.data20190715 19871@b@Dumping heap to /app/tomcat7/logs/heap.bytes.data20190715 ...@b@Heap dump file created@b@...
2. 打开jdk的bin目录自带可视化分析工具(jvisualvm.exe),如下图所示,再装入步骤1中的导出的heap.bytes.data20190715文件
3. 找到需要分析排除类实例(如com.xwood.gw.download.ClientUser,查看实例#1-#5实际数值情况),如下图所示