496 assert(Heap_lock->owned_by_self(), "Locking discipline."); |
496 assert(Heap_lock->owned_by_self(), "Locking discipline."); |
497 |
497 |
498 initialize_gc_policy_counters(); |
498 initialize_gc_policy_counters(); |
499 |
499 |
500 G1YoungGenSizer sizer; |
500 G1YoungGenSizer sizer; |
501 size_t initial_region_num = sizer.initial_young_region_num(); |
|
502 _min_desired_young_length = sizer.min_young_region_num(); |
501 _min_desired_young_length = sizer.min_young_region_num(); |
503 _max_desired_young_length = sizer.max_young_region_num(); |
502 _max_desired_young_length = sizer.max_young_region_num(); |
504 |
503 |
505 if (FLAG_IS_CMDLINE(NewRatio)) { |
504 if (FLAG_IS_CMDLINE(NewRatio)) { |
506 if (FLAG_IS_CMDLINE(NewSize) || FLAG_IS_CMDLINE(MaxNewSize)) { |
505 if (FLAG_IS_CMDLINE(NewSize) || FLAG_IS_CMDLINE(MaxNewSize)) { |
510 update_young_list_size_using_newratio(_g1->n_regions()); |
509 update_young_list_size_using_newratio(_g1->n_regions()); |
511 _using_new_ratio_calculations = true; |
510 _using_new_ratio_calculations = true; |
512 } |
511 } |
513 } |
512 } |
514 |
513 |
515 // GenCollectorPolicy guarantees that min <= initial <= max. |
|
516 // Asserting here just to state that we rely on this property. |
|
517 assert(_min_desired_young_length <= _max_desired_young_length, "Invalid min/max young gen size values"); |
514 assert(_min_desired_young_length <= _max_desired_young_length, "Invalid min/max young gen size values"); |
518 assert(initial_region_num <= _max_desired_young_length, "Initial young gen size too large"); |
|
519 assert(_min_desired_young_length <= initial_region_num, "Initial young gen size too small"); |
|
520 |
515 |
521 set_adaptive_young_list_length(_min_desired_young_length < _max_desired_young_length); |
516 set_adaptive_young_list_length(_min_desired_young_length < _max_desired_young_length); |
522 if (adaptive_young_list_length()) { |
517 if (adaptive_young_list_length()) { |
523 _young_list_fixed_length = 0; |
518 _young_list_fixed_length = 0; |
524 } else { |
519 } else { |
525 _young_list_fixed_length = initial_region_num; |
520 assert(_min_desired_young_length == _max_desired_young_length, "Min and max young size differ"); |
|
521 _young_list_fixed_length = _min_desired_young_length; |
526 } |
522 } |
527 _free_regions_at_end_of_collection = _g1->free_regions(); |
523 _free_regions_at_end_of_collection = _g1->free_regions(); |
528 update_young_list_target_length(); |
524 update_young_list_target_length(); |
529 _prev_eden_capacity = _young_list_target_length * HeapRegion::GrainBytes; |
525 _prev_eden_capacity = _young_list_target_length * HeapRegion::GrainBytes; |
530 |
526 |