< prev index next >
src/hotspot/share/services/memReporter.cpp
Print this page
rev 57511 : [mq]: metaspace-improvement
*** 198,236 ****
amount_in_current_scale(_malloc_snapshot->malloc_overhead()->size()) > 0) {
out->print_cr("%27s (tracking overhead=" SIZE_FORMAT "%s)", " ",
amount_in_current_scale(_malloc_snapshot->malloc_overhead()->size()), scale);
} else if (flag == mtClass) {
// Metadata information
! report_metadata(Metaspace::NonClassType);
if (Metaspace::using_class_space()) {
! 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:";
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);
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);
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);
out->print_cr("%27s ( waste=" SIZE_FORMAT "%s =%2.2f%%)", " ", amount_in_current_scale(waste),
scale, ((float)waste * 100)/committed);
--- 198,236 ----
amount_in_current_scale(_malloc_snapshot->malloc_overhead()->size()) > 0) {
out->print_cr("%27s (tracking overhead=" SIZE_FORMAT "%s)", " ",
amount_in_current_scale(_malloc_snapshot->malloc_overhead()->size()), scale);
} else if (flag == mtClass) {
// Metadata information
! report_metadata(metaspace::NonClassType);
if (Metaspace::using_class_space()) {
! report_metadata(metaspace::ClassType);
}
}
out->print_cr(" ");
}
}
! 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(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(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);
out->print_cr("%27s ( waste=" SIZE_FORMAT "%s =%2.2f%%)", " ", amount_in_current_scale(waste),
scale, ((float)waste * 100)/committed);
*** 591,655 ****
}
}
void MemSummaryDiffReporter::print_metaspace_diff(const MetaspaceSnapshot* current_ms,
const MetaspaceSnapshot* early_ms) const {
! print_metaspace_diff(Metaspace::NonClassType, current_ms, early_ms);
if (Metaspace::using_class_space()) {
! print_metaspace_diff(Metaspace::ClassType, current_ms, early_ms);
}
}
! void MemSummaryDiffReporter::print_metaspace_diff(Metaspace::MetadataType type,
const MetaspaceSnapshot* current_ms,
const MetaspaceSnapshot* early_ms) const {
! const char* name = (type == Metaspace::NonClassType) ?
! "Metadata: " : "Class space:";
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));
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_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);
if (diff_used != 0) {
out->print(" %+ld%s", diff_used, scale);
}
out->print_cr(")");
// Diff free
out->print("%27s ( free=" SIZE_FORMAT "%s", " ",
! amount_in_current_scale(current_ms->free_in_bytes(type)), scale);
if (diff_free != 0) {
out->print(" %+ld%s", diff_free, scale);
}
out->print_cr(")");
// 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));
if (diff_waste != 0) {
out->print(" %+ld%s", diff_waste, scale);
}
out->print_cr(")");
}
--- 591,655 ----
}
}
void MemSummaryDiffReporter::print_metaspace_diff(const MetaspaceSnapshot* current_ms,
const MetaspaceSnapshot* early_ms) const {
! print_metaspace_diff(metaspace::NonClassType, current_ms, early_ms);
if (Metaspace::using_class_space()) {
! print_metaspace_diff(metaspace::ClassType, current_ms, early_ms);
}
}
! void MemSummaryDiffReporter::print_metaspace_diff(metaspace::MetadataType mdType,
const MetaspaceSnapshot* current_ms,
const MetaspaceSnapshot* early_ms) const {
! 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(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(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(mdType)), scale);
if (diff_used != 0) {
out->print(" %+ld%s", diff_used, scale);
}
out->print_cr(")");
// Diff free
out->print("%27s ( free=" SIZE_FORMAT "%s", " ",
! amount_in_current_scale(current_ms->free_in_bytes(mdType)), scale);
if (diff_free != 0) {
out->print(" %+ld%s", diff_free, scale);
}
out->print_cr(")");
// 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(mdType));
if (diff_waste != 0) {
out->print(" %+ld%s", diff_waste, scale);
}
out->print_cr(")");
}
< prev index next >