< prev index next >
src/hotspot/share/gc/shared/genCollectedHeap.cpp
Print this page
rev 55927 : 8227224: GenCollectedHeap: add subspace transitions for young gen for gc+heap=info log lines
Reviewed-by:
*** 204,213 ****
--- 204,226 ----
void GenCollectedHeap::ref_processing_init() {
_young_gen->ref_processor_init();
_old_gen->ref_processor_init();
}
+ PreGenGCValues GenCollectedHeap::get_pre_gc_values() const {
+ const DefNewGeneration* const def_new_gen = (DefNewGeneration*) young_gen();
+
+ return PreGenGCValues(def_new_gen->used(),
+ def_new_gen->capacity(),
+ def_new_gen->eden()->used(),
+ def_new_gen->eden()->capacity(),
+ def_new_gen->from()->used(),
+ def_new_gen->from()->capacity(),
+ old_gen()->used(),
+ old_gen()->capacity());
+ }
+
GenerationSpec* GenCollectedHeap::young_gen_spec() const {
return _young_gen_spec;
}
GenerationSpec* GenCollectedHeap::old_gen_spec() const {
*** 579,591 ****
bool complete = full && (max_generation == OldGen);
bool old_collects_young = complete && !ScavengeBeforeFullGC;
bool do_young_collection = !old_collects_young && _young_gen->should_collect(full, size, is_tlab);
! size_t young_prev_used = _young_gen->used();
! size_t old_prev_used = _old_gen->used();
! const metaspace::MetaspaceSizesSnapshot prev_meta_sizes;
bool run_verification = total_collections() >= VerifyGCStartAt;
bool prepared_for_verification = false;
bool do_full_collection = false;
--- 592,602 ----
bool complete = full && (max_generation == OldGen);
bool old_collects_young = complete && !ScavengeBeforeFullGC;
bool do_young_collection = !old_collects_young && _young_gen->should_collect(full, size, is_tlab);
! const PreGenGCValues pre_gc_values = get_pre_gc_values();
bool run_verification = total_collections() >= VerifyGCStartAt;
bool prepared_for_verification = false;
bool do_full_collection = false;
*** 623,634 ****
do_full_collection = should_do_full_collection(size, full, is_tlab, max_generation);
if (!do_full_collection) {
// Adjust generation sizes.
_young_gen->compute_new_size();
! print_heap_change(young_prev_used, old_prev_used);
! MetaspaceUtils::print_metaspace_change(prev_meta_sizes);
// Track memory usage and detect low memory after GC finishes
MemoryService::track_memory_usage();
gc_epilogue(complete);
--- 634,644 ----
do_full_collection = should_do_full_collection(size, full, is_tlab, max_generation);
if (!do_full_collection) {
// Adjust generation sizes.
_young_gen->compute_new_size();
! print_heap_change(pre_gc_values);
// Track memory usage and detect low memory after GC finishes
MemoryService::track_memory_usage();
gc_epilogue(complete);
*** 682,693 ****
MetaspaceUtils::verify_metrics();
// Resize the metaspace capacity after full collections
MetaspaceGC::compute_new_size();
update_full_collections_completed();
! print_heap_change(young_prev_used, old_prev_used);
! MetaspaceUtils::print_metaspace_change(prev_meta_sizes);
// Track memory usage and detect low memory after GC finishes
MemoryService::track_memory_usage();
// Need to tell the epilogue code we are done with Full GC, regardless what was
--- 692,702 ----
MetaspaceUtils::verify_metrics();
// Resize the metaspace capacity after full collections
MetaspaceGC::compute_new_size();
update_full_collections_completed();
! print_heap_change(pre_gc_values);
// Track memory usage and detect low memory after GC finishes
MemoryService::track_memory_usage();
// Need to tell the epilogue code we are done with Full GC, regardless what was
*** 1266,1280 ****
_young_gen->print_summary_info_on(&lsh);
_old_gen->print_summary_info_on(&lsh);
}
}
! void GenCollectedHeap::print_heap_change(size_t young_prev_used, size_t old_prev_used) const {
! log_info(gc, heap)("%s: " SIZE_FORMAT "K->" SIZE_FORMAT "K(" SIZE_FORMAT "K)",
! _young_gen->short_name(), young_prev_used / K, _young_gen->used() /K, _young_gen->capacity() /K);
! log_info(gc, heap)("%s: " SIZE_FORMAT "K->" SIZE_FORMAT "K(" SIZE_FORMAT "K)",
! _old_gen->short_name(), old_prev_used / K, _old_gen->used() /K, _old_gen->capacity() /K);
}
class GenGCPrologueClosure: public GenCollectedHeap::GenClosure {
private:
bool _full;
--- 1275,1312 ----
_young_gen->print_summary_info_on(&lsh);
_old_gen->print_summary_info_on(&lsh);
}
}
! void GenCollectedHeap::print_heap_change(const PreGenGCValues& pre_gc_values) const {
! const DefNewGeneration* const def_new_gen = (DefNewGeneration*) young_gen();
!
! log_info(gc, heap)(HEAP_CHANGE_FORMAT" "
! HEAP_CHANGE_FORMAT" "
! HEAP_CHANGE_FORMAT,
! HEAP_CHANGE_FORMAT_ARGS(def_new_gen->short_name(),
! pre_gc_values.young_gen_used(),
! pre_gc_values.young_gen_capacity(),
! def_new_gen->used(),
! def_new_gen->capacity()),
! HEAP_CHANGE_FORMAT_ARGS("Eden",
! pre_gc_values.eden_used(),
! pre_gc_values.eden_capacity(),
! def_new_gen->eden()->used(),
! def_new_gen->eden()->capacity()),
! HEAP_CHANGE_FORMAT_ARGS("From",
! pre_gc_values.from_used(),
! pre_gc_values.from_capacity(),
! def_new_gen->from()->used(),
! def_new_gen->from()->capacity()));
! log_info(gc, heap)(HEAP_CHANGE_FORMAT,
! HEAP_CHANGE_FORMAT_ARGS(old_gen()->short_name(),
! pre_gc_values.old_gen_used(),
! pre_gc_values.old_gen_capacity(),
! old_gen()->used(),
! old_gen()->capacity()));
! MetaspaceUtils::print_metaspace_change(pre_gc_values.metaspace_sizes());
}
class GenGCPrologueClosure: public GenCollectedHeap::GenClosure {
private:
bool _full;
< prev index next >