hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp
changeset 22555 ea32f6c51d08
parent 22551 9bf46d16dcc6
child 23506 9b98355e9060
equal deleted inserted replaced
22554:a19b9cf9ffa8 22555:ea32f6c51d08
   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();