hotspot/src/share/vm/memory/referenceProcessor.hpp
// Phase2: remove all those references whose referents are
// reachable.
inline void process_phase2(DiscoveredList& refs_list,
BoolObjectClosure* is_alive,
OopClosure* keep_alive,
VoidClosure* complete_gc) {
{- -------------------------------------------
(1) ReferenceProcessor::pp2_work() または ReferenceProcessor::pp2_work_concurrent_discovery() を呼び出すだけ.
(discovery 処理がアトミックに行われていれば (= CMS や G1GC のように並行して動いている GC スレッドがいなければ),
ReferenceProcessor::pp2_work() を呼び出す.
そうでなければ ReferenceProcessor::pp2_work_concurrent_discovery() を呼び出す.
See: ReferenceProcessor::_discovery_is_atomic)
---------------------------------------- -}
if (discovery_is_atomic()) {
// complete_gc is ignored in this case for this phase
pp2_work(refs_list, is_alive, keep_alive);
} else {
assert(complete_gc != NULL, "Error");
pp2_work_concurrent_discovery(refs_list, is_alive,
keep_alive, complete_gc);
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.