jvm调试相关:jmap失效下找到alternatives神器
1、使用 jmap <pid>出现的错误日志:很明显是版本问题
Error attaching to process: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.171-b11. Target VM is 25.151-b12
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.171-b11. Target VM is 25.151-b12
2、解决方案:
(1)修改虚拟机中的jdk版本
- Linux的脚本命令基本放在/usr/bin目录:cd /usr/bin
- 查找jmap:ll | grep jmap ,发现 jmap 软链接 /etc/alternatives/jmap
- alternatives常用于同一个系统中安装同一软件的多个版本。(以前不知道有这种神器)
- 通过alternatives去安装新的jdk版本即可。
- 参考:https://www.cnblogs.com/caidi/p/6009217.html
(2)修改编译环境中的jdk版本:
- 官方下载对应版本的jdk,重新编译打包即可。
3、导入内存数据:jmap -dump:live,format=b,file=jmap.dump <pid>
发现jmap.dump文件属于超级用户的,需要改为普通用户也能操作修改:sudo chmod -R ugo+rw filename
4、下载到windows系统中,进行dump文件分析:jhat jvisualvm
参考:https://www.cnblogs.com/0616--ataozhijia/p/4136312.html