随笔-java进行内存分析
n=$1 if [ -z $n ]; then n=10 fi pid=`jps -lv|grep Server|awk '{print $1}'` jmap -histo:live $pid >jmap1.txt sleep 10 jmap -histo:live $pid >jmap2.txt cat jmap1.txt|sed 's/\[/\\[/g' >fjmap1.txt cat jmap2.txt|sed 's/\[/\\[/g' >fjmap2.txt obj_l=`cat fjmap2.txt |sed -n '4,$p'|awk {'print $4 '}|head -n $n` objnum_l=`cat fjmap2.txt |sed -n '4,$p'|awk {'print $3 '}|head -n $n` objcount_l=`cat fjmap2.txt |sed -n '4,$p'|awk {'print $2 '}|head -n $n` #echo $obj_l i=1 for obj in $obj_l do echo No.$i: target=`echo $obj|awk {'print $1'}` echo $target num2=`echo $objnum_l|cut -d " " -f $i` num1=`cat fjmap1.txt |sed -n '4,$p'|grep "$target"|head -n 1|awk {'print $3'}` count2=`echo $objcount_l|cut -d " " -f $i` count1=`cat fjmap1.txt |sed -n '4,$p'|grep "$target"|head -n 1|awk {'print $2'}` if [ -z $num2 ];then num2=0 fi if [ -z $num1 ];then num1=0 fi if [ -z $count2 ];then count2=0 fi if [ -z $count1 ];then count1=0 fi num=`expr $num2 - $num1` echo "charge_heap:$num" count=`expr $count2 - $count1` echo "charge_count:$count" ((i=i+1)) done #echo `cat jmap1.txt |grep javax.xml.namespace.QName|head -n 1|awk {'print $3'}`
建议可以在java出现fgc的时候调用此脚本