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

changeset 3221
dbfcbecbb2dc
parent 3219
c6a6e936dc68
child 3268
8aae2050e83e
equal deleted inserted replaced
3220:c08412904149 3221:dbfcbecbb2dc
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

mercurial