< prev index next >

src/hotspot/share/gc/parallel/psOldGen.cpp

Print this page
rev 59215 : imported patch max_gen_size
rev 59216 : [mq]: cleanup
rev 59217 : [mq]: remove_init_gen_size

*** 38,76 **** #include "runtime/java.hpp" #include "utilities/align.hpp" PSOldGen::PSOldGen(ReservedSpace rs, size_t initial_size, size_t min_size, size_t max_size, const char* perf_data_name, int level): ! _init_gen_size(initial_size), _min_gen_size(min_size), _max_gen_size(max_size) { ! initialize(rs, GenAlignment, perf_data_name, level); } ! void PSOldGen::initialize(ReservedSpace rs, size_t alignment, const char* perf_data_name, int level) { ! initialize_virtual_space(rs, alignment); initialize_work(perf_data_name, level); ! // The old gen can grow to gen_size_limit(). _reserve reflects only // the current maximum that can be committed. ! assert(_reserved.byte_size() <= gen_size_limit(), "Consistency check"); initialize_performance_counters(perf_data_name, level); } ! void PSOldGen::initialize_virtual_space(ReservedSpace rs, size_t alignment) { if(ParallelArguments::is_heterogeneous_heap()) { _virtual_space = new PSFileBackedVirtualSpace(rs, alignment, AllocateOldGenAt); if (!(static_cast <PSFileBackedVirtualSpace*>(_virtual_space))->initialize()) { vm_exit_during_initialization("Could not map space for PSOldGen at given AllocateOldGenAt path"); } } else { _virtual_space = new PSVirtualSpace(rs, alignment); } ! if (!_virtual_space->expand_by(_init_gen_size)) { vm_exit_during_initialization("Could not reserve enough space for " "object heap"); } } --- 38,78 ---- #include "runtime/java.hpp" #include "utilities/align.hpp" PSOldGen::PSOldGen(ReservedSpace rs, size_t initial_size, size_t min_size, size_t max_size, const char* perf_data_name, int level): ! _min_gen_size(min_size), _max_gen_size(max_size) { ! initialize(rs, initial_size, GenAlignment, perf_data_name, level); } ! void PSOldGen::initialize(ReservedSpace rs, size_t initial_size, size_t alignment, const char* perf_data_name, int level) { ! initialize_virtual_space(rs, initial_size, alignment); initialize_work(perf_data_name, level); ! // The old gen can grow to max_gen_size(). _reserve reflects only // the current maximum that can be committed. ! assert(_reserved.byte_size() <= max_gen_size(), "Consistency check"); initialize_performance_counters(perf_data_name, level); } ! void PSOldGen::initialize_virtual_space(ReservedSpace rs, ! size_t initial_size, ! size_t alignment) { if(ParallelArguments::is_heterogeneous_heap()) { _virtual_space = new PSFileBackedVirtualSpace(rs, alignment, AllocateOldGenAt); if (!(static_cast <PSFileBackedVirtualSpace*>(_virtual_space))->initialize()) { vm_exit_during_initialization("Could not map space for PSOldGen at given AllocateOldGenAt path"); } } else { _virtual_space = new PSVirtualSpace(rs, alignment); } ! if (!_virtual_space->expand_by(initial_size)) { vm_exit_during_initialization("Could not reserve enough space for " "object heap"); } }
*** 78,89 **** // // Basic memory initialization // MemRegion limit_reserved((HeapWord*)virtual_space()->low_boundary(), ! heap_word_size(_max_gen_size)); ! assert(limit_reserved.byte_size() == _max_gen_size, "word vs bytes confusion"); // // Object start stuff // --- 80,91 ---- // // Basic memory initialization // MemRegion limit_reserved((HeapWord*)virtual_space()->low_boundary(), ! heap_word_size(max_gen_size())); ! assert(limit_reserved.byte_size() == max_gen_size(), "word vs bytes confusion"); // // Object start stuff //
*** 135,146 **** start_array()->set_covered_region(cmr); } void PSOldGen::initialize_performance_counters(const char* perf_data_name, int level) { // Generation Counters, generation 'level', 1 subspace ! _gen_counters = new PSGenerationCounters(perf_data_name, level, 1, _min_gen_size, ! _max_gen_size, virtual_space()); _space_counters = new SpaceCounters(perf_data_name, 0, virtual_space()->reserved_size(), _object_space, _gen_counters); } --- 137,148 ---- start_array()->set_covered_region(cmr); } void PSOldGen::initialize_performance_counters(const char* perf_data_name, int level) { // Generation Counters, generation 'level', 1 subspace ! _gen_counters = new PSGenerationCounters(perf_data_name, level, 1, min_gen_size(), ! max_gen_size(), virtual_space()); _space_counters = new SpaceCounters(perf_data_name, 0, virtual_space()->reserved_size(), _object_space, _gen_counters); }
*** 297,322 **** const size_t alignment = virtual_space()->alignment(); const size_t size_before = virtual_space()->committed_size(); size_t new_size = used_in_bytes() + desired_free_space; if (new_size < used_in_bytes()) { // Overflowed the addition. ! new_size = gen_size_limit(); } // Adjust according to our min and max ! new_size = clamp(new_size, min_gen_size(), gen_size_limit()); ! assert(gen_size_limit() >= reserved().byte_size(), "max new size problem?"); new_size = align_up(new_size, alignment); const size_t current_size = capacity_in_bytes(); log_trace(gc, ergo)("AdaptiveSizePolicy::old generation size: " "desired free: " SIZE_FORMAT " used: " SIZE_FORMAT " new size: " SIZE_FORMAT " current size " SIZE_FORMAT " gen limits: " SIZE_FORMAT " / " SIZE_FORMAT, desired_free_space, used_in_bytes(), new_size, current_size, ! gen_size_limit(), min_gen_size()); if (new_size == current_size) { // No change requested return; } --- 299,324 ---- const size_t alignment = virtual_space()->alignment(); const size_t size_before = virtual_space()->committed_size(); size_t new_size = used_in_bytes() + desired_free_space; if (new_size < used_in_bytes()) { // Overflowed the addition. ! new_size = max_gen_size(); } // Adjust according to our min and max ! new_size = clamp(new_size, min_gen_size(), max_gen_size()); ! assert(max_gen_size() >= reserved().byte_size(), "max new size problem?"); new_size = align_up(new_size, alignment); const size_t current_size = capacity_in_bytes(); log_trace(gc, ergo)("AdaptiveSizePolicy::old generation size: " "desired free: " SIZE_FORMAT " used: " SIZE_FORMAT " new size: " SIZE_FORMAT " current size " SIZE_FORMAT " gen limits: " SIZE_FORMAT " / " SIZE_FORMAT, desired_free_space, used_in_bytes(), new_size, current_size, ! max_gen_size(), min_gen_size()); if (new_size == current_size) { // No change requested return; }
*** 356,369 **** assert(new_word_size == heap_word_size(object_space()->capacity_in_bytes()), "Sanity"); } - size_t PSOldGen::gen_size_limit() { - return _max_gen_size; - } - void PSOldGen::print() const { print_on(tty);} void PSOldGen::print_on(outputStream* st) const { st->print(" %-15s", name()); st->print(" total " SIZE_FORMAT "K, used " SIZE_FORMAT "K", capacity_in_bytes()/K, used_in_bytes()/K); --- 358,367 ----
< prev index next >