Hitachi

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


7.17.4 ZGCサイクル

ZGCでは,ZGCサイクルと呼ばれる一連の処理を実行することでGC処理をします。

ZGCサイクルの概要を次の図に示します。

図7‒41 ZGCサイクルの概要

[図データ]

ZGCサイクルは,アプリケーションとGC処理を並行して実行するフェーズ(M/R,RP,EC,RE)と,アプリケーションを一時停止してGC処理を実行するフェーズ(STW1,STW2,STW3)で構成されます。

各フェーズで実行する処理の内容は,次のとおりです。

〈この項の構成〉

(1) STW1

M/Rフェーズでオブジェクトの参照をたどるときの起点となるオブジェクトをマークします。

(2) M/R(mark/remap)

通常の参照を処理します。Javaヒープ領域内のすべてのオブジェクトに対して,使用中か使用済みかを判別し,マーキングします。マーキングの結果を基に,ECフェーズで回収するページを選択します。また,前回のZGCサイクルで回収したページに含まれていた使用中のオブジェクトを,フォワーディングテーブルを経由せずに直接参照できるようマッピング処理をします。

(3) STW2

アプリケーションの実行を一時停止し,M/Rフェーズですべてのオブジェクトがマーキングされたかどうかを確認します。マーキングされていないオブジェクトがある場合は,再びM/Rフェーズを開始します。

(4) RP(reference processing)

M/Rフェーズでのマーキング結果を基に,弱参照,ソフト参照,およびファントム参照をたどって,オブジェクトが使用済みかどうかを判別します。

(5) EC(evacuation candidates)

M/RおよびRPフェーズでマーキングしたオブジェクトの情報を基に,回収するページを選択します。また,回収するページにある使用中のオブジェクトについて,現在のアドレスから新しいアドレスへのマッピング情報をフォワーディングテーブルに書き込みます。

(6) STW3

現在のサイクルが終了してから次のサイクルが開始するまでの間で,REフェーズで移動する使用中のオブジェクトを参照する場合に,フォワーディングテーブルを介して参照できるようマッピング処理をします。

(7) RE(relocation)

使用中のオブジェクトを,Free領域から割り当てたページにコピーします。そのあと,使用済みのオブジェクトをページごと回収します。これによって,使用済みのオブジェクトの削除が完了します。