2521 gclog_or_tty->print_cr(" clear marked regions + work1: %8.3f ms.", |
2521 gclog_or_tty->print_cr(" clear marked regions + work1: %8.3f ms.", |
2522 (clear_marked_end - start)*1000.0); |
2522 (clear_marked_end - start)*1000.0); |
2523 } |
2523 } |
2524 if (ParallelGCThreads > 0) { |
2524 if (ParallelGCThreads > 0) { |
2525 const size_t OverpartitionFactor = 4; |
2525 const size_t OverpartitionFactor = 4; |
2526 const size_t MinChunkSize = 8; |
2526 const size_t MinWorkUnit = 8; |
2527 const size_t ChunkSize = |
2527 const size_t WorkUnit = |
2528 MAX2(_g1->n_regions() / (ParallelGCThreads * OverpartitionFactor), |
2528 MAX2(_g1->n_regions() / (ParallelGCThreads * OverpartitionFactor), |
2529 MinChunkSize); |
2529 MinWorkUnit); |
2530 _collectionSetChooser->prepareForAddMarkedHeapRegionsPar(_g1->n_regions(), |
2530 _collectionSetChooser->prepareForAddMarkedHeapRegionsPar(_g1->n_regions(), |
2531 ChunkSize); |
2531 WorkUnit); |
2532 ParKnownGarbageTask parKnownGarbageTask(_collectionSetChooser, |
2532 ParKnownGarbageTask parKnownGarbageTask(_collectionSetChooser, |
2533 (int) ChunkSize); |
2533 (int) WorkUnit); |
2534 _g1->workers()->run_task(&parKnownGarbageTask); |
2534 _g1->workers()->run_task(&parKnownGarbageTask); |
2535 |
2535 |
2536 assert(_g1->check_heap_region_claim_values(HeapRegion::InitialClaimValue), |
2536 assert(_g1->check_heap_region_claim_values(HeapRegion::InitialClaimValue), |
2537 "sanity check"); |
2537 "sanity check"); |
2538 } else { |
2538 } else { |