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

Print this page
rev 3905 : 8001424: G1: Rename certain G1-specific flags
Summary: Rename G1DefaultMinNewGenPercent, G1DefaultMaxNewGenPercent, and G1OldCSetRegionLiveThresholdPercent to G1NewSizePercent, G1MaxNewSizePercent, and G1MixedGCLiveThresholdPercent respectively. Continue, however, to accept the previous names. If both are specified, the new name takes precedence.
Reviewed-by:


 292   _reserve_factor = (double) reserve_perc / 100.0;
 293   // This will be set when the heap is expanded
 294   // for the first time during initialization.
 295   _reserve_regions = 0;
 296 
 297   initialize_all();
 298   _collectionSetChooser = new CollectionSetChooser();
 299   _young_gen_sizer = new G1YoungGenSizer(); // Must be after call to initialize_flags
 300 }
 301 
 302 void G1CollectorPolicy::initialize_flags() {
 303   set_min_alignment(HeapRegion::GrainBytes);
 304   set_max_alignment(GenRemSet::max_alignment_constraint(rem_set_name()));
 305   if (SurvivorRatio < 1) {
 306     vm_exit_during_initialization("Invalid survivor ratio specified");
 307   }
 308   CollectorPolicy::initialize_flags();
 309 }
 310 
 311 G1YoungGenSizer::G1YoungGenSizer() : _sizer_kind(SizerDefaults), _adaptive_size(true) {
 312   assert(G1DefaultMinNewGenPercent <= G1DefaultMaxNewGenPercent, "Min larger than max");
 313   assert(G1DefaultMinNewGenPercent > 0 && G1DefaultMinNewGenPercent < 100, "Min out of bounds");
 314   assert(G1DefaultMaxNewGenPercent > 0 && G1DefaultMaxNewGenPercent < 100, "Max out of bounds");
 315 
 316   if (FLAG_IS_CMDLINE(NewRatio)) {
 317     if (FLAG_IS_CMDLINE(NewSize) || FLAG_IS_CMDLINE(MaxNewSize)) {
 318       warning("-XX:NewSize and -XX:MaxNewSize override -XX:NewRatio");
 319     } else {
 320       _sizer_kind = SizerNewRatio;
 321       _adaptive_size = false;
 322       return;
 323     }
 324   }
 325 
 326   if (FLAG_IS_CMDLINE(NewSize)) {
 327     _min_desired_young_length = MAX2((uint) (NewSize / HeapRegion::GrainBytes),
 328                                      1U);
 329     if (FLAG_IS_CMDLINE(MaxNewSize)) {
 330       _max_desired_young_length =
 331                              MAX2((uint) (MaxNewSize / HeapRegion::GrainBytes),
 332                                   1U);
 333       _sizer_kind = SizerMaxAndNewSize;
 334       _adaptive_size = _min_desired_young_length == _max_desired_young_length;
 335     } else {
 336       _sizer_kind = SizerNewSizeOnly;
 337     }
 338   } else if (FLAG_IS_CMDLINE(MaxNewSize)) {
 339     _max_desired_young_length =
 340                              MAX2((uint) (MaxNewSize / HeapRegion::GrainBytes),
 341                                   1U);
 342     _sizer_kind = SizerMaxNewSizeOnly;
 343   }
 344 }
 345 
 346 uint G1YoungGenSizer::calculate_default_min_length(uint new_number_of_heap_regions) {
 347   uint default_value = (new_number_of_heap_regions * G1DefaultMinNewGenPercent) / 100;
 348   return MAX2(1U, default_value);
 349 }
 350 
 351 uint G1YoungGenSizer::calculate_default_max_length(uint new_number_of_heap_regions) {
 352   uint default_value = (new_number_of_heap_regions * G1DefaultMaxNewGenPercent) / 100;
 353   return MAX2(1U, default_value);
 354 }
 355 
 356 void G1YoungGenSizer::heap_size_changed(uint new_number_of_heap_regions) {
 357   assert(new_number_of_heap_regions > 0, "Heap must be initialized");
 358 
 359   switch (_sizer_kind) {
 360     case SizerDefaults:
 361       _min_desired_young_length = calculate_default_min_length(new_number_of_heap_regions);
 362       _max_desired_young_length = calculate_default_max_length(new_number_of_heap_regions);
 363       break;
 364     case SizerNewSizeOnly:
 365       _max_desired_young_length = calculate_default_max_length(new_number_of_heap_regions);
 366       _max_desired_young_length = MAX2(_min_desired_young_length, _max_desired_young_length);
 367       break;
 368     case SizerMaxNewSizeOnly:
 369       _min_desired_young_length = calculate_default_min_length(new_number_of_heap_regions);
 370       _min_desired_young_length = MIN2(_min_desired_young_length, _max_desired_young_length);
 371       break;
 372     case SizerMaxAndNewSize:




 292   _reserve_factor = (double) reserve_perc / 100.0;
 293   // This will be set when the heap is expanded
 294   // for the first time during initialization.
 295   _reserve_regions = 0;
 296 
 297   initialize_all();
 298   _collectionSetChooser = new CollectionSetChooser();
 299   _young_gen_sizer = new G1YoungGenSizer(); // Must be after call to initialize_flags
 300 }
 301 
 302 void G1CollectorPolicy::initialize_flags() {
 303   set_min_alignment(HeapRegion::GrainBytes);
 304   set_max_alignment(GenRemSet::max_alignment_constraint(rem_set_name()));
 305   if (SurvivorRatio < 1) {
 306     vm_exit_during_initialization("Invalid survivor ratio specified");
 307   }
 308   CollectorPolicy::initialize_flags();
 309 }
 310 
 311 G1YoungGenSizer::G1YoungGenSizer() : _sizer_kind(SizerDefaults), _adaptive_size(true) {
 312   assert(G1NewSizePercent <= G1MaxNewSizePercent, "Min larger than max");
 313   assert(G1NewSizePercent > 0 && G1NewSizePercent < 100, "Min out of bounds");
 314   assert(G1MaxNewSizePercent > 0 && G1MaxNewSizePercent < 100, "Max out of bounds");
 315 
 316   if (FLAG_IS_CMDLINE(NewRatio)) {
 317     if (FLAG_IS_CMDLINE(NewSize) || FLAG_IS_CMDLINE(MaxNewSize)) {
 318       warning("-XX:NewSize and -XX:MaxNewSize override -XX:NewRatio");
 319     } else {
 320       _sizer_kind = SizerNewRatio;
 321       _adaptive_size = false;
 322       return;
 323     }
 324   }
 325 
 326   if (FLAG_IS_CMDLINE(NewSize)) {
 327     _min_desired_young_length = MAX2((uint) (NewSize / HeapRegion::GrainBytes),
 328                                      1U);
 329     if (FLAG_IS_CMDLINE(MaxNewSize)) {
 330       _max_desired_young_length =
 331                              MAX2((uint) (MaxNewSize / HeapRegion::GrainBytes),
 332                                   1U);
 333       _sizer_kind = SizerMaxAndNewSize;
 334       _adaptive_size = _min_desired_young_length == _max_desired_young_length;
 335     } else {
 336       _sizer_kind = SizerNewSizeOnly;
 337     }
 338   } else if (FLAG_IS_CMDLINE(MaxNewSize)) {
 339     _max_desired_young_length =
 340                              MAX2((uint) (MaxNewSize / HeapRegion::GrainBytes),
 341                                   1U);
 342     _sizer_kind = SizerMaxNewSizeOnly;
 343   }
 344 }
 345 
 346 uint G1YoungGenSizer::calculate_default_min_length(uint new_number_of_heap_regions) {
 347   uint default_value = (new_number_of_heap_regions * G1NewSizePercent) / 100;
 348   return MAX2(1U, default_value);
 349 }
 350 
 351 uint G1YoungGenSizer::calculate_default_max_length(uint new_number_of_heap_regions) {
 352   uint default_value = (new_number_of_heap_regions * G1MaxNewSizePercent) / 100;
 353   return MAX2(1U, default_value);
 354 }
 355 
 356 void G1YoungGenSizer::heap_size_changed(uint new_number_of_heap_regions) {
 357   assert(new_number_of_heap_regions > 0, "Heap must be initialized");
 358 
 359   switch (_sizer_kind) {
 360     case SizerDefaults:
 361       _min_desired_young_length = calculate_default_min_length(new_number_of_heap_regions);
 362       _max_desired_young_length = calculate_default_max_length(new_number_of_heap_regions);
 363       break;
 364     case SizerNewSizeOnly:
 365       _max_desired_young_length = calculate_default_max_length(new_number_of_heap_regions);
 366       _max_desired_young_length = MAX2(_min_desired_young_length, _max_desired_young_length);
 367       break;
 368     case SizerMaxNewSizeOnly:
 369       _min_desired_young_length = calculate_default_min_length(new_number_of_heap_regions);
 370       _min_desired_young_length = MIN2(_min_desired_young_length, _max_desired_young_length);
 371       break;
 372     case SizerMaxAndNewSize: