src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp
src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp
Print this page
*** 29,51 ****
// There is a nice batch of tested generation sizing code in
// TwoGenerationCollectorPolicy. Lets reuse it!
class GenerationSizer : public TwoGenerationCollectorPolicy {
! public:
GenerationSizer() {
! // Partial init only!
! initialize_flags();
! initialize_size_info();
}
void initialize_flags() {
// Do basic sizing work
TwoGenerationCollectorPolicy::initialize_flags();
- // If the user hasn't explicitly set the number of worker
- // threads, set the count.
assert(UseSerialGC ||
!FLAG_IS_DEFAULT(ParallelGCThreads) ||
(ParallelGCThreads > 0),
"ParallelGCThreads should be set before flag initialization");
--- 29,61 ----
// There is a nice batch of tested generation sizing code in
// TwoGenerationCollectorPolicy. Lets reuse it!
class GenerationSizer : public TwoGenerationCollectorPolicy {
! private:
!
! void trace_gen_sizes(const char* const str) {
! if (TracePageSizes) {
! tty->print_cr("%s: " SIZE_FORMAT "," SIZE_FORMAT " "
! SIZE_FORMAT "," SIZE_FORMAT " "
! SIZE_FORMAT,
! str,
! _min_gen1_size / K, _max_gen1_size / K,
! _min_gen0_size / K, _max_gen0_size / K,
! _max_heap_byte_size / K);
! }
! }
!
! public:
GenerationSizer() {
! initialize_all();
}
void initialize_flags() {
// Do basic sizing work
TwoGenerationCollectorPolicy::initialize_flags();
assert(UseSerialGC ||
!FLAG_IS_DEFAULT(ParallelGCThreads) ||
(ParallelGCThreads > 0),
"ParallelGCThreads should be set before flag initialization");
*** 59,73 ****
if (InitialSurvivorRatio < 3) {
InitialSurvivorRatio = 3;
}
}
! size_t min_young_gen_size() { return _min_gen0_size; }
! size_t young_gen_size() { return _initial_gen0_size; }
! size_t max_young_gen_size() { return _max_gen0_size; }
!
! size_t min_old_gen_size() { return _min_gen1_size; }
! size_t old_gen_size() { return _initial_gen1_size; }
! size_t max_old_gen_size() { return _max_gen1_size; }
};
#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GENERATIONSIZER_HPP
--- 69,100 ----
if (InitialSurvivorRatio < 3) {
InitialSurvivorRatio = 3;
}
}
! void initialize_size_info() {
! TwoGenerationCollectorPolicy::initialize_size_info();
!
! trace_gen_sizes("ps heap raw");
! const size_t page_sz = os::page_size_for_region(_min_heap_byte_size,
! _max_heap_byte_size,
! 8);
!
! // Can a page size be something else than a power of two?
! assert(is_power_of_2((intptr_t)page_sz), "must be a power of 2");
! _min_alignment = round_to(page_sz, intra_heap_alignment());
!
! // Update sizes to reflect the selected page size.
! _min_gen0_size = align_size_up(_min_gen0_size, _min_alignment);
! _initial_gen0_size = MAX2(align_size_up_(_initial_gen0_size, _min_alignment), _min_gen0_size);
! _max_gen0_size = align_size_up(_max_gen0_size, _min_alignment);
!
! // Align old gen size down to preserve specified heap size. Adjust all other values.
! _max_gen1_size = max_heap_byte_size() - _max_gen0_size;
! _min_gen1_size = MIN2(align_size_up_(_min_gen1_size, _min_alignment), _max_gen1_size);
! _initial_gen1_size = MIN2(align_size_up_(_initial_gen1_size, _min_alignment), _max_gen1_size);
!
! trace_gen_sizes("ps heap rnd");
! }
};
#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GENERATIONSIZER_HPP
src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File