Hitachi

uCosminexus Application Runtime - Cosminexus Developer's Kit for Java 機能解説・リファレンス


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

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

表2‒1 各メモリ管理方式の特長

項番

メモリ管理方式

特長

1

SerialGC

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

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

メモリサイズのチューニングをすることで,FullGCの発生回数を減少できる。

2

G1GC

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

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

GCには長い時間が掛かるGC(FullGC)と,短い時間で終わるGC(YoungGC,MixedGC)がある。YoungGCとMixedGCのGCの目標時間を指定できる。

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

3

ZGC

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

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

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

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

注※

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

SerialGCについては「2.2 SerialGCの仕組みとJavaVMのメモリチューニング」を,G1GCについては「2.3 G1GCの仕組みとJavaVMのメモリチューニング」を,ZGCについては「2.4 ZGCの仕組みとJavaVMのメモリチューニング(JDK17以降の場合)」を参照してください。