equal
deleted
inserted
replaced
527 counters->update_survived(survived); |
527 counters->update_survived(survived); |
528 counters->update_promoted(promoted); |
528 counters->update_promoted(promoted); |
529 counters->update_survivor_overflowed(_survivor_overflow); |
529 counters->update_survivor_overflowed(_survivor_overflow); |
530 } |
530 } |
531 |
531 |
|
532 size_t max_young_size = young_gen->max_size(); |
|
533 |
|
534 // Deciding a free ratio in the young generation is tricky, so if |
|
535 // MinHeapFreeRatio or MaxHeapFreeRatio are in use (implicating |
|
536 // that the old generation size may have been limited because of them) we |
|
537 // should then limit our young generation size using NewRatio to have it |
|
538 // follow the old generation size. |
|
539 if (MinHeapFreeRatio != 0 || MaxHeapFreeRatio != 100) { |
|
540 max_young_size = MIN2(old_gen->capacity_in_bytes() / NewRatio, young_gen->max_size()); |
|
541 } |
|
542 |
532 size_t survivor_limit = |
543 size_t survivor_limit = |
533 size_policy->max_survivor_size(young_gen->max_size()); |
544 size_policy->max_survivor_size(max_young_size); |
534 _tenuring_threshold = |
545 _tenuring_threshold = |
535 size_policy->compute_survivor_space_size_and_threshold( |
546 size_policy->compute_survivor_space_size_and_threshold( |
536 _survivor_overflow, |
547 _survivor_overflow, |
537 _tenuring_threshold, |
548 _tenuring_threshold, |
538 survivor_limit); |
549 survivor_limit); |
551 } |
562 } |
552 |
563 |
553 // Do call at minor collections? |
564 // Do call at minor collections? |
554 // Don't check if the size_policy is ready at this |
565 // Don't check if the size_policy is ready at this |
555 // level. Let the size_policy check that internally. |
566 // level. Let the size_policy check that internally. |
556 if (UseAdaptiveSizePolicy && |
567 if (UseAdaptiveGenerationSizePolicyAtMinorCollection && |
557 UseAdaptiveGenerationSizePolicyAtMinorCollection && |
|
558 ((gc_cause != GCCause::_java_lang_system_gc) || |
568 ((gc_cause != GCCause::_java_lang_system_gc) || |
559 UseAdaptiveSizePolicyWithSystemGC)) { |
569 UseAdaptiveSizePolicyWithSystemGC)) { |
560 |
570 |
561 // Calculate optimal free space amounts |
571 // Calculate optimal free space amounts |
562 assert(young_gen->max_size() > |
572 assert(young_gen->max_size() > |
566 |
576 |
567 size_t young_live = young_gen->used_in_bytes(); |
577 size_t young_live = young_gen->used_in_bytes(); |
568 size_t eden_live = young_gen->eden_space()->used_in_bytes(); |
578 size_t eden_live = young_gen->eden_space()->used_in_bytes(); |
569 size_t cur_eden = young_gen->eden_space()->capacity_in_bytes(); |
579 size_t cur_eden = young_gen->eden_space()->capacity_in_bytes(); |
570 size_t max_old_gen_size = old_gen->max_gen_size(); |
580 size_t max_old_gen_size = old_gen->max_gen_size(); |
571 size_t max_eden_size = young_gen->max_size() - |
581 size_t max_eden_size = max_young_size - |
572 young_gen->from_space()->capacity_in_bytes() - |
582 young_gen->from_space()->capacity_in_bytes() - |
573 young_gen->to_space()->capacity_in_bytes(); |
583 young_gen->to_space()->capacity_in_bytes(); |
574 |
584 |
575 // Used for diagnostics |
585 // Used for diagnostics |
576 size_policy->clear_generation_free_space_flags(); |
586 size_policy->clear_generation_free_space_flags(); |