< prev index next >

src/share/vm/gc/g1/g1CollectorPolicy.cpp

Print this page

        

@@ -219,11 +219,16 @@
   size_t free_bytes = (base_free_regions - young_length) * HeapRegion::GrainBytes;
 
   // When copying, we will likely need more bytes free than is live in the region.
   // Add some safety margin to factor in the confidence of our guess, and the
   // natural expected waste.
-  size_t expected_bytes_to_copy = (size_t)(bytes_to_copy * safety_factor());
+  // (100.0 / G1ConfidencePercent) is a scale factor that expresses the uncertainty
+  // of the calculation: the lower the confidence, the more headroom.
+  // (100 + TargetPLABWastePct) represents the increase in expected bytes during
+  // copying due to anticipated waste in the PLABs.
+  double safety_factor = (100.0 / G1ConfidencePercent) * (100 + TargetPLABWastePct) / 100.0;
+  size_t expected_bytes_to_copy = (size_t)(safety_factor * bytes_to_copy);
 
   if (expected_bytes_to_copy > free_bytes) {
     // end condition 3: out-of-space
     return false;
   }

@@ -585,11 +590,10 @@
 
   phase_times()->record_cur_collection_start_sec(start_time_sec);
   _pending_cards = _g1->pending_card_num();
 
   _collection_set->reset_bytes_used_before();
-  _collection_set->reset_bytes_live_before();
   _bytes_copied_during_gc = 0;
 
   collector_state()->set_last_gc_was_young(false);
 
   // do that for any other surv rate groups

@@ -1260,18 +1264,9 @@
     result += 1;
   }
   return (uint) result;
 }
 
-size_t G1CollectorPolicy::available_bytes_estimate() {
-  size_t estimated_available_bytes = 0;
-  if (_free_regions_at_end_of_collection > _reserve_regions) {
-    uint available_regions = _free_regions_at_end_of_collection - _reserve_regions;
-    estimated_available_bytes = (size_t)((available_regions * HeapRegion::GrainBytes) / safety_factor());
-  }
-  return estimated_available_bytes;
-}
-
 void G1CollectorPolicy::finalize_collection_set(double target_pause_time_ms) {
   double time_remaining_ms = _collection_set->finalize_young_part(target_pause_time_ms);
   _collection_set->finalize_old_part(time_remaining_ms);
 }
< prev index next >