これらは, ParallelScavengeHeap の Minor GC 処理 ("Parallel Scavenge" 処理) で使用される補助クラス (See: here for details).
ParallelScavengeHeap の Minor GC 処理を行うクラス (より正確には, そのための機能を納めた名前空間(AllStatic クラス)).
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp))
class PSScavenge: AllStatic {
Minor GC 処理はこのクラスの PSScavenge::invoke() メソッドが呼び出されることで実行される (See: here for details).
See: here for details
ParallelScavengeHeap に対する Minor GC 処理で使用される補助クラス(Closureクラス).
まだコピーされていないオブジェクトに対して, コピー処理を行い, さらに元の場所にフォワーディングポインタを埋める処理を行う.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp))
class PSScavengeRootsClosure: public OopClosure {
PSScavenge::invoke_no_policy() 内で(のみ)使用されている (より正確には, PSScavenge::invoke_no_policy() 内と, そこから呼び出される ScavengeRootsTask::do_it() と ThreadRootsTask::do_it() 内で使用される補助クラス).
See: here for details
ParallelScavengeHeap に対する Minor GC 処理で使用される補助クラス(Closureクラス).
GC 時の参照オブジェクト(java.lang.ref オブジェクト)の処理に用いられる Closure クラス. PSIsAliveClosure::do_object_b() メソッドが呼ばれると, 処理対象のオブジェクトが生きているかどうかを返す.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp))
class PSIsAliveClosure: public BoolObjectClosure {
PSScavenge クラスの is_alive_closure フィールドに格納されているほか, PSRefProcTaskProxy::doit() 内で局所変数として生成されている.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp))
class PSScavenge: AllStatic {
...
static PSIsAliveClosure _is_alive_closure; // Closure used for reference processing
PSScavenge::invoke_no_policy() 内で(のみ)使用されている (より正確には, PSScavenge::invoke_no_policy() 内と, そこから呼び出される PSRefProcTaskProxy::do_it() 内で使用される補助クラス).
See: here for details
ParallelScavengeHeap に対する Minor GC 処理で使用される補助クラス(Closureクラス).
GC 時の参照オブジェクト(java.lang.ref オブジェクト)の処理に用いられる Closure クラス.
まだコピーされていないオブジェクトに対して, コピー処理を行い, さらに元の場所にフォワーディングポインタを埋める処理を行う.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp))
class PSKeepAliveClosure: public OopClosure {
PSScavenge::invoke_no_policy() 内で(のみ)使用されている (より正確には, PSScavenge::invoke_no_policy() 内と, そこから呼び出される PSRefProcTaskProxy::do_it() 内で使用される補助クラス).
処理自体は PSScavengeRootsClosure とよく似ている. (See: PSScavengeRootsClosure)
ただし, このクラスの場合は To 領域のコピー済みのオブジェクトは処理対象にしないという点が異なる.
See: here for details
ParallelScavengeHeap に対する Minor GC 処理で使用される補助クラス(Closureクラス).
処理したオブジェクトから辿れる範囲全てについて再帰的に処理を行うための Closure.
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp))
class PSEvacuateFollowersClosure: public VoidClosure {
PSScavenge::invoke_no_policy() 内で(のみ)使用されている (より正確には, PSScavenge::invoke_no_policy() 内と, そこから呼び出される PSRefProcTaskProxy::do_it() 内で使用される補助クラス).
現在は, GC 時の参照オブジェクト(java.lang.ref オブジェクト)の処理にのみ用いられている (live だと分かった参照オブジェクトから再帰的に辿る処理に使用されているのみ).
See: here for details
ParallelScavengeHeap に対する Minor GC 処理で使用される補助クラス(Closureクラス).
GC 処理が失敗した際に, 各オブジェクトの mark フィールドを初期状態に戻すための Closure (GC 処理後には mark フィールドには forwarding pointer が埋められているため, それをクリアする).
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp))
class PSPromotionFailedClosure : public ObjectClosure {
PSScavenge::clean_up_failed_promotion() 内で(のみ)使用されている (See: here for details).
See: here for details
ParallelScavengeHeap に対する Minor GC 処理で使用される補助クラス.
参照オブジェクト(java.lang.ref オブジェクト)の処理をマルチスレッド化するための補助クラス (より具体的に言うと, コンストラクタ引数で渡された AbstractRefProcTaskExecutor::ProcessTask オブジェクトを実行するためのクラス (See: AbstractRefProcTaskExecutor::ProcessTask))
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp))
class PSRefProcTaskProxy: public GCTask {
PSRefProcTaskExecutor::execute(ProcessTask& task) 内で(のみ)使用されている (See: here and here for details).
参照オブジェクト処理のマルチスレッド化自体は PSRefProcTaskExecutor クラスが行っている.
各 PSRefProcTaskProxy オブジェクトには PSRefProcTaskExecutor クラスによって 実行すべき AbstractRefProcTaskExecutor::ProcessTask オブジェクトが 1つ割り当てられるので, 単にそれを実行するだけ.
See: here for details
See: here for details
ParallelScavengeHeap に対する Minor GC 処理で使用される補助クラス.
参照オブジェクト(java.lang.ref オブジェクト)の処理をマルチスレッド化するための補助クラス (より具体的に言うと, コンストラクタ引数で渡された AbstractRefProcTaskExecutor::EnqueueTask オブジェクトを実行するためのクラス (See: AbstractRefProcTaskExecutor::EnqueueTask))
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp))
class PSRefEnqueueTaskProxy: public GCTask {
PSRefProcTaskExecutor::execute(EnqueueTask& task) 内で(のみ)使用されている (See: here and here for details).
参照オブジェクト処理のマルチスレッド化自体は PSRefProcTaskExecutor クラスが行っている.
各 PSRefEnqueueTaskProxy オブジェクトには PSRefProcTaskExecutor クラスによって 実行すべき AbstractRefProcTaskExecutor::EnqueueTask オブジェクトが 1つ割り当てられるので, 単にそれを実行するだけ.
See: here for details
See: here for details
ParallelScavengeHeap に対する Minor GC 処理で使用される補助クラス.
ParallelScavengeHeap に対する Minor GC 処理 ("Parallel Scavenge" 処理) で使用される AbstractRefProcTaskExecutor クラス. (つまり, Parallel Scavenge 処理における参照オブジェクト(java.lang.ref オブジェクト)の処理をマルチスレッド化するためのクラス (See: AbstractRefProcTaskExecutor)).
((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp))
class PSRefProcTaskExecutor: public AbstractRefProcTaskExecutor {
PSScavenge::invoke_no_policy() 内で(のみ)使用されている (See: here and here for details).
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.