TLAB の動的サイズ調整処理は以下のように行われる.
最終的には ThreadLocalAllocBuffer::desired_size() に新しい値が設定される.
ThreadLocalAllocBuffer::desired_size() の値は TLAB 確保時に確保サイズの決定に使われる. より具体的に言うと ThreadLocalAllocBuffer::compute_size() 内で参照される (See: here for details).
(See: here for details) -> PSScavenge::invoke_no_policy() -> ParallelScavengeHeap::accumulate_statistics_all_tlabs() -> CollectedHeap::accumulate_statistics_all_tlabs() -> ThreadLocalAllocBuffer::accumulate_statistics_before_gc() -> GlobalTLABStats::initialize() -> ThreadLocalAllocBuffer::accumulate_statistics() -> ThreadLocalAllocBuffer::initialize_statistics() -> GlobalTLABStats::publish() (See: here for details) -> PSParallelCompact::pre_compact() -> ParallelScavengeHeap::accumulate_statistics_all_tlabs() -> (同上) (See: here for details) -> PSMarkSweep::invoke_no_policy() -> ParallelScavengeHeap::accumulate_statistics_all_tlabs() -> (同上)
(#Under Construction)
(See: here for details) -> GenCollectedHeap::do_collection() -> GenCollectedHeap::gc_prologue() -> CollectedHeap::accumulate_statistics_all_tlabs() -> (同上)
(See: here for details) -> PSScavenge::invoke_no_policy() -> ParallelScavengeHeap::resize_all_tlabs() -> CollectedHeap::resize_all_tlabs() -> ThreadLocalAllocBuffer::resize_all_tlabs() -> ThreadLocalAllocBuffer::resize() (See: here for details) -> PSParallelCompact::invoke_no_policy() -> ParallelScavengeHeap::resize_all_tlabs() -> (同上) (See: here for details) -> PSMarkSweep::invoke_no_policy() -> ParallelScavengeHeap::resize_all_tlabs() -> (同上)
(#Under Construction)
(See: here for details) -> GenCollectedHeap::do_collection() -> GenCollectedHeap::gc_epilogue() -> CollectedHeap::resize_all_tlabs() -> (同上)
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.