前言
一次做项目遇到heapdump文件,也是第一次碰到所以记录一下过程
步骤
下载heapdump文件是一个.hprof.gz 后缀的文件,使用MemoryAnalyzer 这个工具就可以进行对其中的键值进行分析 工具的安装 下载好MemoryAnalyzer后,直接解压打开里面的MemoryAnalyzer.exe 就可以了 
如果打开报这个错,可以试试安装java11版本就可以解决

heapdump文件分析 打开MemoryAnalyzer后,file->Open Heap Dump->选择打开的文件 ,后面选择默认的就行,点击Finish  然后选择工具栏中的第三个图标,可以查看所有的键值   首先可以在这里去筛选自己想要查询的关键词,比如pass、name等,我下面根据pass找相关的值  然后根据对应的那一行选择Path To GC Roots->with all references  
找到模块的名字后java.util.concurrent.ConcurrentHashMap$Node 和xxx.rxxx..password ,然后选择工具栏中的第四个图标  输入sql语句select * from java.util.concurrent.ConcurrentHashMap$Node x WHERE (toString(x.key).contains("xxx.rxxx..password")) ,在左边一栏可以看到key就是刚刚查找的名字,value就是对应的值。  也可以直接用这个搜索语句去模糊搜索一些参数如pass、name select * from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains("pass")) 
|