1.eclipse.iniファイルの設定値(vmパラメータのみ)
メモリ設定方法
- vmargs
- server
- Dosgi.requiredJavaVersion=1.5
- Dhelp.lucene.tokenizer=standard
- Xms1024m
- Xmx1024m
- XX:PermSize=256m
- XX:MaxPermSize=256m
- XX:NewRatio=2
- XX:SurvivorRatio=8
- XX:+UseParNewGC
- XX:+UseConcMarkSweepGC
- XX:ParallelGCThreads=30
- XX:+PrintGCDetails
2.設定パラメータの説明
性能改善パラメータ
- Xms ヒープ領域(New領域+Old領域)の初期値
- Xmx ヒープ領域(New領域+Old領域)の最大値
- XX:PermSize Permanent領域の初期値 MaxPermSizeと同じに設定することが推奨されている
- XX:MaxPermSize Permanent領域の最大値
- XX:NewRatio New領域 と Old領域 の比率
例) -XX:NewRatio=2
New領域 : Old領域 = 1 : 2
- XX:SurvivorRatio New領域 と Old領域 の比率
例) -XX:SurvivorRatio=8
Eden領域 : From領域 : To領域 = 8 : 1 : 1
GC関連パラメータ
- XX:+UseLargePages
- XX:+UseParNewGC
- XX:+UseConcMarkSweepGC
- XX:ParallelGCThreads=4
- XX:+PrintGCDetails
3.javaが確保できるメモリサイズの確認方法
java -Xmx1500m -version
4.VMの起動モード
・クライアントVMモード
起動時間を短縮し、メモリサイズを縮小するように調整されている。
VM起動時に「-client」オプションを付けて実行する。
・サーバVMモード
プログラム実行速度が最大になるように設計されている。
VM起動時に「-server」オプションを付けて実行する。
4.1起動モードの確認方法
$java -version $java -Xmx1024m -version java version "1.8.0_40" Java(TM) SE Runtime Environment (build 1.8.0_40-b26) Java HotSpot(TM) Client VM (build 25.40-b25, mixed mode) ↑クライアントVMモード
JVMのチューニング方法
http://d.hatena.ne.jp/ogin_s57/20120709/1341836704
5.ヒープ、GC状況確認
5.1 確認用コマンド
【jstat】
JDKにデフォルトで同梱されているコマンド。
すでに起動中のJavaプロセス(jpsコマンドで取得)のヒープの使用状況をリアルタイムに確認することができる。
(例)jstat -gcutil -h10
(例)jstat -gcutil -t
5.2 監視対象とするJVMのプロセスIDの確認方法
$ jps 6008 7412 Jps 7440 Bootstrap
jpsのPIDは常に変わる場合があり、6008(筆はeclipseのPIDを指定)が監視対象
javaについてはjpsよりタスクマネージャのPIDを見ると良いかも。
(PIDの表示は「表示」→「列の選択」で表示)
※コマンド実行できない場合は起動対象のjavaのbinへパスを通す
5.3 ログの見方
ガベージコレクション統計データの概要
列 説明
S0 Survivor 領域 0 の使用率 (現在の容量に対するパーセンテージ)
S1 Survivor 領域 1 の使用率 (現在の容量に対するパーセンテージ)
E Eden 領域の使用率 (現在の容量に対するパーセンテージ)
O Old 領域の使用率 (現在の容量に対するパーセンテージ)
P Permanent 領域の使用率 (現在の容量に対するパーセンテージ)
YGC 若い世代の GC イベント数
YGCT 若い世代のガベージコレクション時間
FGC フル GC イベント数
FGCT フルガベージコレクション時間
GCT ガベージコレクション総時間
6. メモリ状況確認(ダンプ取得)
スレッドダンプ取得
jstack -F 9352 > threaddump.txt
ヒープダンプ取得
jmap -F -dump:format=b,file=C:\Users\AAA\Desktop\heapdump.map 3068
メモリリーク(メモリ解放漏れ)をチェック
7.参考URL
GCを適切に行わせるためのヒープサイズの設定
http://www.atmarkit.co.jp/ait/articles/0404/02/news079_2.html
JVMオプション
http://fomsan.sakura.ne.jp/memo/java/javaVMOptions.html
実行中のJavaアプリケーションの拡張設定を確認/変更する
http://d.hatena.ne.jp/Kazuhira/20120623/1340464983
恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!!
http://developer.cybozu.co.jp/tech/?p=8218