美文网首页
jvm-jmap 打印堆栈信息失败VMVersionMismat

jvm-jmap 打印堆栈信息失败VMVersionMismat

作者: 极简架构 | 来源:发表于2018-08-30 21:17 被阅读0次

    一、背景: 线上服务端需要使用kafka, 要求jdk8+.目前线上版本为jdk7 需升级为 jdk8. 


    二、jdk7升级jdk8过程主要命令:

    --1.卸载openjdk

    java -version

    rpm -qa | grep java

    rpm -e --nodeps xxx

    --2.上传新的 linux jdk8文件 并 解压:

    tar -zxvf jdk-8u161-linux-x64.gz

    mv /home/work/software/jdk1.8.0_161 /usr/local

    --3.配置环境变量:

    打开文件 /etc/profile 在最后面加入以下内容(其中/usr/local/jdk1.7.0_03 路径为自己服务器上面jdk的安装路径)

    vim /etc/profile

    #最后一行 unset pathmunge 行下添加配置: 需要先注释掉 jdk7的环境变量配置

    # jdk8:

    JAVA_HOME=/usr/local/jdk1.8.0_161

    JRE_HOME=/usr/local/jdk1.8.0_161/jre

    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

    export JAVA_HOME JRE_HOME PATH CLASSPATH

    -- 4.jdk7 升级至jdk8:

    # 先找到旧的jdk7目录 & 删除jdk7目录

    which java

    rm -rf /usr/local/jdk1.7.0_79/jre/bin/java

    which java

    # 重新生效新的jdk8 环境变量

    source /etc/profile

    java -version

    which java

    source /etc/profile  --使环境变量修改立即生效

    echo $PATH  --查看PATH值

    java -version -》 输出如下证明jdk8升级成功

    java -version

    --5.启动服务端:

    jps -v 正常输出

    jmap 报错: VMVersionMismatchException: Supported versions are 24.79-b02. Target VM is 25.161-b12

    jmap error

    问题提示猜测可能是 jdk版本问题,怀疑环境变量问题:

    尝试带路径 使用 jmap:   /usr/local/jdk1.8.0_161/bin/jmap -heap 27405 

    可以正常输出,证明就是环境变量问题.

    /usr/local/jdk1.8.0_161/bin/jmap -heap 27405 

    查看环境变量: echo $PATH  换行显示如下

    系统环境变量

    Fix方法: 覆盖环境变量 使jdk8环境变量只追加一次即可

    vim /etc/profile

    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/home/opt/bin:/opt/bin:/home/opt/bin

    source /etc/profile   -> 使修改后环境变量生效

    打印最新环境变量

    再次尝试 jmap -heap 27405  完美打印: 问题fix

    相关文章

      网友评论

          本文标题:jvm-jmap 打印堆栈信息失败VMVersionMismat

          本文链接:https://www.haomeiwen.com/subject/tsadwftx.html