shell查询目标jvm的perm占比

#查询指定进程号下面的方法区使用率,jdk1.7是perm,jdk1.8是metaspace
function get_perm_use_percent()
{
    pid="$1"  //pid是目标jvm的进程号
    jdk=$(ps -ef |grep $pid | awk '{print $8}' | grep -v 'grep')
    permUsePerceng=0;
    if [[ $jdk == *java8* ]]
       then
         MetaspaceUse=$(/usr/local/java8/bin/jstat -gc $pid |awk 'NR==2{print $10}')
         MaxMetaspaceSize=$(/usr/local/java8/bin/jcmd $pid VM.flags | egrep -o "\-XX:MaxMetaspaceSize\S*")
         if [ ! $MaxMetaspaceSize ]
                then
                MaxMetaspaceSize=-1
                return $?
                 else
                MaxMetaspaceSize=${MaxMetaspaceSize#*=}
         fi
         permUsePerceng=`awk 'BEGIN{ printf "%0.4f\n" ,'${MetaspaceUse}/${MaxMetaspaceSize}*1024' }'`
       else
         PermUse=$(jstat -gc $pid |awk 'NR==2{print $10}')
         MaxPermSize=$(jcmd $pid VM.flags | egrep -o "\-XX:MaxPermSize\S*")
         if [ ! $MaxPermSize ]
           then
             MaxPermSize=-1
             return $?
           else
             MaxPermSize=${MaxPermSize#*=}
         fi
         permUsePerceng=`awk 'BEGIN{ printf "%0.4f\n" ,'$PermUse/$MaxPermSize*1024' }'`
    fi
}

  

posted @ 2020-04-12 22:21  岳兴亮  阅读(230)  评论(0编辑  收藏  举报