Hitachi

Cosminexus V11 アプリケーションサーバ システム設計ガイド


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

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

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

項番

メモリ管理方式

特徴

1

SerialGC

  • スループットを重視するシステムに適している。

  • スループットが高い。

  • GCには長い時間かかるGC(FullGC)と短い時間で終わるGC(CopyGC)がある。GCの時間を制御できない。

  • メモリサイズのチューニングをすることで,FullGCの発生を抑止できる。

2

SerialGCと明示管理ヒープ機能の組み合わせ※1

  • セッションを使用した一般的なWebフロントシステムに適している。

  • スループットが高い。

  • GCには長い時間かかるGC(FullGC)と短い時間で終わるGC(CopyGC)がある。GCの時間を制御できない。

  • セッションを利用したシステムでは,メモリサイズのチューニングに加えて,セッションをExplicitヒープで管理することでFullGCを抑止できる。

3

G1GC

  • 大規模なメモリを使用するシステムやレスポンスを重視するシステムに適している。

  • 項番1や項番2の方式と比較してスループットが低い。

  • GCには長い時間かかるGC(FullGC)と短い時間で終わるGC(YoungGC,MixedGC)がある。YoungGCとMixedGCのGCの時間を制御できる。

  • メモリサイズのチューニングに加え,GCを行うスレッド数を増やすことで,FullGCの発生を抑止できる。

4

ZGC※2

  • 低レイテンシを重視するシステムに適している。一部を除き,GC処理をアプリケーションの実行と並行で行うため,アプリケーションの停止時間が非常に短い。これは数テラバイトの非常に大きなヒープを使用するようなシステムでも同様である。

  • 項番1,3の方式と比較してスループットが低い。

  • 項番1,3の方式のように複数の種類のGCで構成されていないため,ZGCサイクルと呼ばれる一連の処理が毎回繰り返される。

  • メモリサイズの単純なチューニングだけで低レイテンシを実現できる。

注※1

JDK11以前の場合にだけ選択できます。

注※2

JDK17以降の場合にだけ選択できます。

SerialGCについては「7.2 SerialGCの仕組み」〜「7.10 拡張verbosegc情報を使用したFullGCの要因の分析方法」を,明示管理ヒープ機能については「7.11 Explicitヒープのチューニング」〜「7.14 明示管理ヒープ機能適用時に発生しやすい問題とその解決方法」を,G1GCについては「7.15 G1GCの仕組み」〜「7.16 G1GCのチューニング」を,ZGCについては「7.17 ZGCの仕組み(JDK17以降の場合)」〜「7.20 ZGC使用時の注意事項(JDK17以降の場合)」を参照してください。