comparison src/share/vm/memory/collectorPolicy.cpp @ 13066:236cecd9ec97

8028093: Initial young size is smaller than minimum young size Summary: Remove min_gen1_size argument from adjust_gen0_sizes() Reviewed-by: tschatzl, brutisso
author jwilhelm
date Mon, 11 Nov 2013 13:50:10 +0100
parents 3ad2b68d107e
children 284953caf7aa 1d01a7f3a336
comparison
equal deleted inserted replaced
13065:3ad2b68d107e 13066:236cecd9ec97
521 // is used to make the needed adjustments. The application of the 521 // is used to make the needed adjustments. The application of the
522 // policies could be more sophisticated (iterative for example) but 522 // policies could be more sophisticated (iterative for example) but
523 // keeping it simple also seems a worthwhile goal. 523 // keeping it simple also seems a worthwhile goal.
524 bool TwoGenerationCollectorPolicy::adjust_gen0_sizes(size_t* gen0_size_ptr, 524 bool TwoGenerationCollectorPolicy::adjust_gen0_sizes(size_t* gen0_size_ptr,
525 size_t* gen1_size_ptr, 525 size_t* gen1_size_ptr,
526 const size_t heap_size, 526 const size_t heap_size) {
527 const size_t min_gen1_size) {
528 bool result = false; 527 bool result = false;
529 528
530 if ((*gen1_size_ptr + *gen0_size_ptr) > heap_size) { 529 if ((*gen0_size_ptr + *gen1_size_ptr) > heap_size) {
531 uintx smallest_new_size = young_gen_size_lower_bound(); 530 uintx smallest_new_size = young_gen_size_lower_bound();
532 if ((heap_size < (*gen0_size_ptr + min_gen1_size)) && 531 if ((heap_size < (*gen0_size_ptr + _min_gen1_size)) &&
533 (heap_size >= min_gen1_size + smallest_new_size)) { 532 (heap_size >= _min_gen1_size + smallest_new_size)) {
534 // Adjust gen0 down to accommodate min_gen1_size 533 // Adjust gen0 down to accommodate _min_gen1_size
535 *gen0_size_ptr = align_size_down_bounded(heap_size - min_gen1_size, _gen_alignment); 534 *gen0_size_ptr = align_size_down_bounded(heap_size - _min_gen1_size, _gen_alignment);
536 assert(*gen0_size_ptr > 0, "Min gen0 is too large");
537 result = true; 535 result = true;
538 } else { 536 } else {
539 *gen1_size_ptr = align_size_down_bounded(heap_size - *gen0_size_ptr, _gen_alignment); 537 *gen1_size_ptr = align_size_down_bounded(heap_size - *gen0_size_ptr, _gen_alignment);
540 } 538 }
541 } 539 }
592 " -XX:OldSize flag is being ignored", 590 " -XX:OldSize flag is being ignored",
593 _max_heap_byte_size); 591 _max_heap_byte_size);
594 } 592 }
595 // If there is an inconsistency between the OldSize and the minimum and/or 593 // If there is an inconsistency between the OldSize and the minimum and/or
596 // initial size of gen0, since OldSize was explicitly set, OldSize wins. 594 // initial size of gen0, since OldSize was explicitly set, OldSize wins.
597 if (adjust_gen0_sizes(&_min_gen0_size, &_min_gen1_size, 595 if (adjust_gen0_sizes(&_min_gen0_size, &_min_gen1_size, _min_heap_byte_size)) {
598 _min_heap_byte_size, _min_gen1_size)) {
599 if (PrintGCDetails && Verbose) { 596 if (PrintGCDetails && Verbose) {
600 gclog_or_tty->print_cr("2: Minimum gen0 " SIZE_FORMAT " Initial gen0 " 597 gclog_or_tty->print_cr("2: Minimum gen0 " SIZE_FORMAT " Initial gen0 "
601 SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT, 598 SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT,
602 _min_gen0_size, _initial_gen0_size, _max_gen0_size); 599 _min_gen0_size, _initial_gen0_size, _max_gen0_size);
603 } 600 }
604 } 601 }
605 // Initial size 602 // Initial size
606 if (adjust_gen0_sizes(&_initial_gen0_size, &_initial_gen1_size, 603 if (adjust_gen0_sizes(&_initial_gen0_size, &_initial_gen1_size,
607 _initial_heap_byte_size, _initial_gen1_size)) { 604 _initial_heap_byte_size)) {
608 if (PrintGCDetails && Verbose) { 605 if (PrintGCDetails && Verbose) {
609 gclog_or_tty->print_cr("3: Minimum gen0 " SIZE_FORMAT " Initial gen0 " 606 gclog_or_tty->print_cr("3: Minimum gen0 " SIZE_FORMAT " Initial gen0 "
610 SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT, 607 SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT,
611 _min_gen0_size, _initial_gen0_size, _max_gen0_size); 608 _min_gen0_size, _initial_gen0_size, _max_gen0_size);
612 } 609 }