7.1 GCとJavaVMのメモリ管理の概要

JavaVMのチューニングの目的は,システムの処理性能の向上です。特に,GCの仕組みを踏まえ,適切なメモリ管理ができるようにチューニングすることで,システムの処理性能が向上します。GCの挙動はメモリ管理方式によって変わるため,システムの要件に合わせて適切なメモリ管理方式を選択してください。アプリケーションサーバでは次の3つのメモリ管理方式を選択できます。

表7-1 各メモリ管理方式の特徴

項番メモリ管理方式特徴
1SerialGC
  • スループットを重視するシステムに適している。
  • スループットが高い。
  • GCには長い時間かかるGC(FullGC)と短い時間で終わるGC(CopyGC)がある。GCの時間を制御できない。
  • メモリサイズのチューニングをすることで,FullGCの発生を抑止できる。
2SerialGCと明示管理ヒープ機能の組み合わせ
  • セッションを使用した一般的なWebフロントシステムに適している。
  • スループットが高い。
  • GCには長い時間かかるGC(FullGC)と短い時間で終わるGC(CopyGC)がある。GCの時間を制御できない。
  • セッションを利用したシステムでは,メモリサイズのチューニングに加えて,セッションをExplicitヒープで管理することでFullGCを抑止できる。
3G1GC
  • 大規模なメモリを使用するシステムやレスポンスを重視するシステムに適している。
  • 項番1や項番2の方式と比較してスループットが低い。
  • GCには長い時間かかるGC(FullGC)と短い時間で終わるGC(YoungGC,MixedGC)がある。YoungGCとMixedGCのGCの時間を制御できる。
  • メモリサイズのチューニングに加え,GCを行うスレッド数を増やすことで,FullGCの発生を抑止できる。

SerialGCについては7.2~7.10を,明示管理ヒープ機能については7.11~7.14を,G1GCについては7.15~7.16を参照してください。