2009年6月24日水曜日

JavaのGCに関する説明(WAS6.1のIBM JVMを元に説明する):

JavaのGCに関する説明(WAS6.1のIBM JVMを元に説明する):
一、GCに対する理解:
1.GC発生頻度:ヒープサイズとアロケーション・レートに依存
2.GC時間の長さ:ヒープサイズとヒープ内のオブジェクト数に依存

二、GC方式に対する理解:
1.ヒープ領域確保の仕方
①Mark & Sweep GC
②Copying GC
2.GC実行時のGCスレッドとアプリケーションスレッド
①"Stop The Worlde"とはどういう意味?
そもそもGCは、オブジェクトのヒープ領域への割り当てが失敗した際 に、発生します。そして、GC処理が開始されると、GC処理を担当するスレッド 以外のスレッドは一時停止されます。それは、GC処理においてオブジェクトの 移動やリファレンスの走査などを行うため、アプリケーション処理がGCと並行 されることによるメモリ情報の整合性などの問題発生を防ぐためです。
GC処理開始から終了までの間、GC処理スレッド以外のスレッドが「一 時停止状態」になるため、一般に、これを“Stop The World”と呼んでいます。
②IBM JVMが提供する二種類のスレッド:
・Parallel Collector:
特徴:GC処理時間の短縮
Parallel Collectorとは、GC処理をマルチ・スレッドで実施するため、 GC処理時間の短縮が期待できます。CPU数の多い大規模システムで効果的であ るといえます。ただし、GC処理の間は、アプリケーション・スレッドは停止さ れます(“Stop The World”)。

・Concurrent Collector:
特徴:アプリケーション・スレッドの停止時間の短縮

3.分割ヒープ領域とフラットなヒープ領域
①フラットなヒープ領域:従来のモデル
②分割(Generational)ヒープ:
WAS6.1のIBM JVMから提供した短命オブジェクト向けのGCモデル

三、WAS6.1のAPサーバに対するJVM設定:
WAS管理コンソール→「サーバ」→「アプリケーションサーバ」に
対象APサーバの設定画面で右側のメニュー「Java及びプロセス管理」の
「プロセス定義」→「Java仮想マシン」画面を開く
この画面でJVMに対する設定を行う。
「汎用JVM引数」には、下記4種類のパラメータがある:

1.-Xgcpolicy:optthruput:
Throughputの最適化。
フラット・ヒープを採用。アプリケーションのスループット重視。
Parallel Collector(Stop The World)、Parallel Mark、Parallel Sweep

2.-Xgcpolicy:optavgpause:
Pause Timeの最適化。
アプリケーションのレスポンスを重視し、GCによる影響を抑える
フラット・ヒープを採用。Concurrent Collector(GCポーズタイムを最小化)、Concurrent Mark、Concurrent Sweep

3.-Xgcpolicy:gencon:
アプリケーションが生成するオブジェクトが短命である。
(Generational Concurrent)
分割ヒープを採用。Nursery AreaはParallel Collector(Stop The World)、
Copying GC。Tenured AreaはConcurrent Collector、Concurrent Mark、
Concurrent Sweep

4.-Xgcpolicy:subpool :
アプリケーションが多量のスレッドを使用し(大規模SMPマシン環境)、
多くのオブジェクトをアロケーション(Subpool)。
フラット・ヒープを採用。スループット重視。Parallel Collector
(Stop-the-world)、Parallel Mark、Parallel Sweep。大規模SMP環境用に
オブジェクト・アロケーション・アルゴリズムを最適化。AIX、Linux PPC、
zSeries、z/OS、i5/OSでのみサポート

0 件のコメント: