hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp
changeset 5034 a1cec6310394
parent 5033 55f476a32544
child 5036 7b652cd72d65
equal deleted inserted replaced
5033:55f476a32544 5034:a1cec6310394
   296   // Set aside an initial future to_space.
   296   // Set aside an initial future to_space.
   297   _g1 = G1CollectedHeap::heap();
   297   _g1 = G1CollectedHeap::heap();
   298   size_t regions = Universe::heap()->capacity() / HeapRegion::GrainBytes;
   298   size_t regions = Universe::heap()->capacity() / HeapRegion::GrainBytes;
   299 
   299 
   300   assert(Heap_lock->owned_by_self(), "Locking discipline.");
   300   assert(Heap_lock->owned_by_self(), "Locking discipline.");
   301 
       
   302   if (G1SteadyStateUsed < 50) {
       
   303     vm_exit_during_initialization("G1SteadyStateUsed must be at least 50%.");
       
   304   }
       
   305 
   301 
   306   initialize_gc_policy_counters();
   302   initialize_gc_policy_counters();
   307 
   303 
   308   if (G1Gen) {
   304   if (G1Gen) {
   309     _in_young_gc_mode = true;
   305     _in_young_gc_mode = true;
  1423     last_pause_included_initial_mark = _should_initiate_conc_mark;
  1419     last_pause_included_initial_mark = _should_initiate_conc_mark;
  1424     if (last_pause_included_initial_mark)
  1420     if (last_pause_included_initial_mark)
  1425       record_concurrent_mark_init_end_pre(0.0);
  1421       record_concurrent_mark_init_end_pre(0.0);
  1426 
  1422 
  1427     size_t min_used_targ =
  1423     size_t min_used_targ =
  1428       (_g1->capacity() / 100) * (G1SteadyStateUsed - G1SteadyStateUsedDelta);
  1424       (_g1->capacity() / 100) * InitiatingHeapOccupancyPercent;
  1429 
  1425 
  1430     if (cur_used_bytes > min_used_targ) {
  1426     if (cur_used_bytes > min_used_targ) {
  1431       if (cur_used_bytes <= _prev_collection_pause_used_at_end_bytes) {
  1427       if (cur_used_bytes <= _prev_collection_pause_used_at_end_bytes) {
  1432       } else if (!_g1->mark_in_progress() && !_last_full_young_gc) {
  1428       } else if (!_g1->mark_in_progress() && !_last_full_young_gc) {
  1433         _should_initiate_conc_mark = true;
  1429         _should_initiate_conc_mark = true;
  2616 
  2612 
  2617 bool
  2613 bool
  2618 G1CollectorPolicy_BestRegionsFirst::should_do_collection_pause(size_t
  2614 G1CollectorPolicy_BestRegionsFirst::should_do_collection_pause(size_t
  2619                                                                word_size) {
  2615                                                                word_size) {
  2620   assert(_g1->regions_accounted_for(), "Region leakage!");
  2616   assert(_g1->regions_accounted_for(), "Region leakage!");
  2621   // Initiate a pause when we reach the steady-state "used" target.
       
  2622   size_t used_hard = (_g1->capacity() / 100) * G1SteadyStateUsed;
       
  2623   size_t used_soft =
       
  2624    MAX2((_g1->capacity() / 100) * (G1SteadyStateUsed - G1SteadyStateUsedDelta),
       
  2625         used_hard/2);
       
  2626   size_t used = _g1->used();
       
  2627 
       
  2628   double max_pause_time_ms = _mmu_tracker->max_gc_time() * 1000.0;
  2617   double max_pause_time_ms = _mmu_tracker->max_gc_time() * 1000.0;
  2629 
  2618 
  2630   size_t young_list_length = _g1->young_list_length();
  2619   size_t young_list_length = _g1->young_list_length();
  2631   size_t young_list_max_length = _young_list_target_length;
  2620   size_t young_list_max_length = _young_list_target_length;
  2632   if (G1FixedEdenSize) {
  2621   if (G1FixedEdenSize) {