--- old/src/hotspot/share/services/memReporter.cpp 2019-07-25 15:29:55.177316628 +0200 +++ new/src/hotspot/share/services/memReporter.cpp 2019-07-25 15:29:54.957313514 +0200 @@ -200,35 +200,35 @@ amount_in_current_scale(_malloc_snapshot->malloc_overhead()->size()), scale); } else if (flag == mtClass) { // Metadata information - report_metadata(Metaspace::NonClassType); + report_metadata(metaspace::NonClassType); if (Metaspace::using_class_space()) { - report_metadata(Metaspace::ClassType); + report_metadata(metaspace::ClassType); } } out->print_cr(" "); } } -void MemSummaryReporter::report_metadata(Metaspace::MetadataType type) const { - assert(type == Metaspace::NonClassType || type == Metaspace::ClassType, - "Invalid metadata type"); - const char* name = (type == Metaspace::NonClassType) ? - "Metadata: " : "Class space:"; +void MemSummaryReporter::report_metadata(metaspace::MetadataType mdType) const { + DEBUG_ONLY(metaspace::check_valid_mdtype(mdType)); + const char* const name = metaspace::describe_mdtype(mdType); outputStream* out = output(); const char* scale = current_scale(); - size_t committed = MetaspaceUtils::committed_bytes(type); - size_t used = MetaspaceUtils::used_bytes(type); - size_t free = (MetaspaceUtils::capacity_bytes(type) - used) - + MetaspaceUtils::free_chunks_total_bytes(type) - + MetaspaceUtils::free_in_vs_bytes(type); + size_t committed = MetaspaceUtils::committed_bytes(mdType); + size_t used = MetaspaceUtils::used_bytes(mdType); + size_t free = 0; // + // TODO think this thru. What is free in this context? + // (MetaspaceUtils::capacity_bytes(type) - used) + // + MetaspaceUtils::free_chunks_total_bytes(type) + // + MetaspaceUtils::free_in_vs_bytes(type); assert(committed >= used + free, "Sanity"); size_t waste = committed - (used + free); out->print_cr("%27s ( %s)", " ", name); out->print("%27s ( ", " "); - print_total(MetaspaceUtils::reserved_bytes(type), committed); + print_total(MetaspaceUtils::reserved_bytes(mdType), committed); out->print_cr(")"); out->print_cr("%27s ( used=" SIZE_FORMAT "%s)", " ", amount_in_current_scale(used), scale); out->print_cr("%27s ( free=" SIZE_FORMAT "%s)", " ", amount_in_current_scale(free), scale); @@ -593,43 +593,43 @@ void MemSummaryDiffReporter::print_metaspace_diff(const MetaspaceSnapshot* current_ms, const MetaspaceSnapshot* early_ms) const { - print_metaspace_diff(Metaspace::NonClassType, current_ms, early_ms); + print_metaspace_diff(metaspace::NonClassType, current_ms, early_ms); if (Metaspace::using_class_space()) { - print_metaspace_diff(Metaspace::ClassType, current_ms, early_ms); + print_metaspace_diff(metaspace::ClassType, current_ms, early_ms); } } -void MemSummaryDiffReporter::print_metaspace_diff(Metaspace::MetadataType type, +void MemSummaryDiffReporter::print_metaspace_diff(metaspace::MetadataType mdType, const MetaspaceSnapshot* current_ms, const MetaspaceSnapshot* early_ms) const { - const char* name = (type == Metaspace::NonClassType) ? - "Metadata: " : "Class space:"; + DEBUG_ONLY(metaspace::check_valid_mdtype(mdType)); + const char* const name = metaspace::describe_mdtype(mdType); outputStream* out = output(); const char* scale = current_scale(); out->print_cr("%27s ( %s)", " ", name); out->print("%27s ( ", " "); - print_virtual_memory_diff(current_ms->reserved_in_bytes(type), - current_ms->committed_in_bytes(type), - early_ms->reserved_in_bytes(type), - early_ms->committed_in_bytes(type)); + print_virtual_memory_diff(current_ms->reserved_in_bytes(mdType), + current_ms->committed_in_bytes(mdType), + early_ms->reserved_in_bytes(mdType), + early_ms->committed_in_bytes(mdType)); out->print_cr(")"); - long diff_used = diff_in_current_scale(current_ms->used_in_bytes(type), - early_ms->used_in_bytes(type)); - long diff_free = diff_in_current_scale(current_ms->free_in_bytes(type), - early_ms->free_in_bytes(type)); - - size_t current_waste = current_ms->committed_in_bytes(type) - - (current_ms->used_in_bytes(type) + current_ms->free_in_bytes(type)); - size_t early_waste = early_ms->committed_in_bytes(type) - - (early_ms->used_in_bytes(type) + early_ms->free_in_bytes(type)); + long diff_used = diff_in_current_scale(current_ms->used_in_bytes(mdType), + early_ms->used_in_bytes(mdType)); + long diff_free = diff_in_current_scale(current_ms->free_in_bytes(mdType), + early_ms->free_in_bytes(mdType)); + + size_t current_waste = current_ms->committed_in_bytes(mdType) + - (current_ms->used_in_bytes(mdType) + current_ms->free_in_bytes(mdType)); + size_t early_waste = early_ms->committed_in_bytes(mdType) + - (early_ms->used_in_bytes(mdType) + early_ms->free_in_bytes(mdType)); long diff_waste = diff_in_current_scale(current_waste, early_waste); // Diff used out->print("%27s ( used=" SIZE_FORMAT "%s", " ", - amount_in_current_scale(current_ms->used_in_bytes(type)), scale); + amount_in_current_scale(current_ms->used_in_bytes(mdType)), scale); if (diff_used != 0) { out->print(" %+ld%s", diff_used, scale); } @@ -637,7 +637,7 @@ // Diff free out->print("%27s ( free=" SIZE_FORMAT "%s", " ", - amount_in_current_scale(current_ms->free_in_bytes(type)), scale); + amount_in_current_scale(current_ms->free_in_bytes(mdType)), scale); if (diff_free != 0) { out->print(" %+ld%s", diff_free, scale); } @@ -647,7 +647,7 @@ // Diff waste out->print("%27s ( waste=" SIZE_FORMAT "%s =%2.2f%%", " ", amount_in_current_scale(current_waste), scale, - ((float)current_waste * 100) / current_ms->committed_in_bytes(type)); + ((float)current_waste * 100) / current_ms->committed_in_bytes(mdType)); if (diff_waste != 0) { out->print(" %+ld%s", diff_waste, scale); }