Skip to content

g1 G1_Conc

ceragon edited this page Dec 7, 2021 · 1 revision

G1 Conc 线程

声明

  1. 声明位于 g1ConcurrentMark.cpp
G1ConcurrentMark::G1ConcurrentMark(G1CollectedHeap* g1h,
                                   G1RegionToSpaceMapper* prev_bitmap_storage,
                                   G1RegionToSpaceMapper* next_bitmap_storage){
    // 省略代码
    _concurrent_workers = new WorkGang("G1 Conc", _max_concurrent_workers, false, true);
    _concurrent_workers->initialize_workers();
}
                                   
  1. 该线程和 GC Thread 同样属于 WorkGang 对象的子线程,所以可以参考那部分内容

run 方法

  1. 和 GC Thread 也一样,run方法会在下面的方法处等待新任务的到来
WorkData GangWorker::wait_for_task() {
    return gang()->dispatcher()->worker_wait_for_task();
}
WorkData worker_wait_for_task() {
    return WorkData(_task, worker_id);
}

任务列表

任务名称 位置 备注 解析
G1ClearBitMapTask G1ConcurrentMark::clear_bitmap
G1CMConcurrentMarkingTask G1ConcurrentMark::mark_from_roots
G1RebuildRemSetTask G1RemSet::rebuild_rem_set
G1CMRootRegionScanTask G1ConcurrentMark::scan_root_regions

Clone this wiki locally