前言
一次做项目遇到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"))
|