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 }