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

 

posted @ 2018-06-05 14:43  月下小魔王  阅读(1036)  评论(0编辑  收藏  举报