jsp, jstatはava-1.8.0-openjdk-devel を入れれば入る。
ava-1.8.0-openjdk-devel
列 | 説明 |
---|---|
S0 | Survivor領域0(From)の使用率(現在の容量に対するパーセンテージ) |
S1 | Survivor領域1(To)の使用率(現在の容量に対するパーセンテージ) |
E | Eden領域の使用率(現在の容量に対するパーセンテージ) |
O | Old領域の使用率(現在の容量に対するパーセンテージ) |
P | Permanent領域の使用率(現在の容量に対するパーセンテージ) |
YGC | New領域のカベージ・コレクションの回数 |
YGCT | New領域のガベージ・コレクション時間(ミリ秒) |
FGC | 完全カベージ・コレクションの回数 |
FGCT | 完全ガベージ・コレクション時間 |
GCT | ガベージ・コレクション総時間(ミリ秒) |
こちらの人のシェルがめちゃくちゃ分かりやすくて感謝
#!/bin/sh detected_javahome() { _PID=$1 JAVA_PATH=$(readlink -f `ps -o cmd= ${_PID} | awk '{print $1}'`) || { echo "JAVA_HOME 特定出来ませんでした。" exit 1 } echo "`dirname "${JAVA_PATH}"`" | sed -e "s|/jre/bin|/bin|g" } java_version() { "${1}/java" -version 2>&1 | grep version | awk -F'"' '{print $2}' | awk -F'.' '{print $2}' } print_gcstat () { _PID=$1 java_home="`detected_javahome ${_PID}`" jstat_path="${java_home}/jstat" if [ -e "${jstat_path}" ]; then java_ver=`java_version "${java_home}"` if [ ${java_ver} -gt 7 ]; then "${jstat_path}" -gc ${_PID} | tail -1 | awk \ '{ \ printf "---------------------------------------------\n"; \ printf "S0 領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $3/1024, $1/1024, ($3/$1 * 100); \ printf "S1 領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $4/1024, $2/1024, ($4/$2 * 100); \ printf "Eden領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $6/1024, $5/1024, ($6/$5 * 100); \ printf "Old 領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $8/1024, $7/1024, ($8/$7 * 100); \ printf "Meta領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $10/1024, $9/1024, ($10/$9 * 100); \ printf "CCPS領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $12/1024, $1/1024, ($12/$11 * 100); \ printf "---------------------------------------------\n"; \ printf "YGC 回数 | %7d 回\n" , $13; \ printf "YGC 時間 | %7.2f 秒\n" , $14; \ printf "FGC 回数 | %7d 回\n" , $15; \ printf "FGC 時間 | %7.2f 秒\n" , $16; \ printf "---------------------------------------------\n"; \ }' else "${jstat_path}" -gc $1 | tail -1 | awk \ '{ \ printf "---------------------------------------------\n"; \ printf "S0 領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $3/1024, $1/1024, ($3/$1 * 100); \ printf "S1 領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $4/1024, $2/1024, ($4/$2 * 100); \ printf "Eden領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $6/1024, $5/1024, ($6/$5 * 100); \ printf "Old 領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $8/1024, $7/1024, ($8/$7 * 100); \ printf "Perm領域 | %7.2f / %7.2f (MB) | %5.2f%% \n" , $10/1024, $9/1024, ($10/$9 * 100); \ printf "---------------------------------------------\n"; \ printf "YGC 回数 | %7d 回\n" , $11; \ printf "YGC 時間 | %7.2f 秒\n" , $12; \ printf "FGC 回数 | %7d 回\n" , $13; \ printf "FGC 時間 | %7.2f 秒\n" , $14; \ printf "---------------------------------------------\n"; \ }' fi fi } PID=$1 ps ${PID} | grep [j]ava > /dev/null || { _PID=`ps -o uid=,pid=,cmd= -C java | head -1 | awk '{print $2}'` echo "---------------------------------------------" ps -o uid,pid,cmd -C java echo "---------------------------------------------" echo -n "Please input the java process id (${_PID}): " read PID if [ -z "${PID}" ]; then PID=${_PID} fi } ps ${PID} | grep [j]ava > /dev/null && { print_gcstat ${PID} }
表示
--------------------------------------------- Please input the java process id (6291): --------------------------------------------- S0 領域 | 0.00 / 112.00 (MB) | 0.00% S1 領域 | 76.27 / 76.50 (MB) | 99.70% Eden領域 | 174.78 / 2515.00 (MB) | 6.95% Old 領域 | 2657.75 / 5461.50 (MB) | 48.66% Meta領域 | 113.98 / 117.71 (MB) | 96.83% CCPS領域 | 10.18 / 112.00 (MB) | 92.55% --------------------------------------------- YGC 回数 | 206924 回 YGC 時間 | 41329.75 秒 FGC 回数 | 220 回 FGC 時間 | 495.27 秒 ---------------------------------------------