これらは, G1CollectedHeap 使用時における Garbage Collection 処理用の補助クラス. より具体的に言うと, 実際の GC 処理を行うクラス (See: here for details).
なお, これらのクラスは以下のような継承関係を持つ (と, コメントには書いてあるが VM_CGC_Operation は VM_Operation のサブクラスでは??)
((cite: hotspot/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp))
// VM_operations for the G1 collector.
// VM_GC_Operation:
// - VM_CGC_Operation
// - VM_G1CollectFull
// - VM_G1OperationWithAllocRequest
// - VM_G1CollectForAllocation
// - VM_G1IncCollectionPause
VM_GC_Operation クラスのサブクラスの1つ (See: here for details).
このクラスは, G1CollectedHeap 用.
((cite: hotspot/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp))
class VM_G1OperationWithAllocRequest: public VM_GC_Operation {
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
See: here for details
VM_GC_Operation クラスの具象サブクラスの1つ (See: here for details).
このクラスは, G1CollectedHeap 用. (より正確には, G1CollectedHeap において java.lang.System.gc() 等が呼び出された場合用. GC アルゴリズムとしては G1 MarkSweep がここから呼び出される).
((cite: hotspot/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp))
class VM_G1CollectFull: public VM_GC_Operation {
G1CollectedHeap::collect() 内で(のみ)使用されている (See: here and here for details).
See: here for details
VM_GC_Operation クラスの具象サブクラスの1つ (See: here for details).
このクラスは, G1CollectedHeap 用. (より正確には, G1CollectedHeap において New/Old 領域からの確保に失敗し, さらに VM_G1IncCollectionPause による Minor GC 処理も失敗した場合用. GC アルゴリズムとしては G1 MarkSweep がここから呼び出される).
((cite: hotspot/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp))
class VM_G1CollectForAllocation: public VM_G1OperationWithAllocRequest {
G1CollectedHeap::mem_allocate() 内で(のみ)使用されている (See: here and here for details).
See: here for details
VM_GC_Operation クラスの具象サブクラスの1つ (See: here for details).
このクラスは, G1CollectedHeap 用. (より正確には, G1CollectedHeap において New/Old 領域からの確保に失敗した場合用. ただし, オプションの値によっては System.gc() 等による明示的な GC 処理の場合にも使用される. GC アルゴリズムとしては Evacuation Pause がここから呼び出される)
((cite: hotspot/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp))
class VM_G1IncCollectionPause: public VM_G1OperationWithAllocRequest {
G1CollectedHeap::do_collection_pause() 内, 及び G1CollectedHeap::collect() 内で(のみ)使用されている (See: here, here, here and here for details)
See: here for details
G1CollectedHeap 使用時における Concurrent marking 処理用の補助クラス(VM_Operation クラス). Concurrent marking 処理中で必要となる Stop-the-World 処理 (Initial Marking Pause, Final Marking Pause, Live Data Counting & Cleanup) を担当する.
(なお, このクラスは VM_GC_Operation クラスではなく VM_Operation クラスのサブクラス. 理由は書かれていないが, 恐らく VM_CMS_Operation と同じような理由だと思われる.)
(コメントでは, CMS とコードを共有してみては? と書かれていたりする)
((cite: hotspot/src/share/vm/gc_implementation/g1/vm_operations_g1.hpp))
// Concurrent GC stop-the-world operations such as initial and final mark;
// consider sharing these with CMS's counterparts.
class VM_CGC_Operation: public VM_Operation {
ConcurrentMarkThread::run() 内で(のみ)使用されている (See: here for details).
なお, このクラスは単独では使用できず, 何らかの VoidClosure と併用される (こいつ自体は実際の処理は行わず, コンストラクタに渡される VoidClosure の do_void() を起動させるだけ. これにより Stop-the-World 処理の種別は3種類あるが VM_Operation クラスはこのクラス 1つだけで済んでいる).
現在は以下の VoidClosure と併せて使用される.
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.