< prev index next >

src/hotspot/share/services/metaspaceDCmd.cpp

Print this page
rev 49736 : [mq]: metaspace-additions-to-jcmd

*** 22,36 **** * */ #include "precompiled.hpp" #include "memory/metaspace.hpp" #include "services/diagnosticCommand.hpp" ! MetaspaceDCmd::MetaspaceDCmd(outputStream* output, bool heap): DCmd(output, heap) { } void MetaspaceDCmd::execute(DCmdSource source, TRAPS) { ! const size_t scale = 1 * K; ! VM_PrintMetadata op(output(), scale); VMThread::execute(&op); } --- 22,76 ---- * */ #include "precompiled.hpp" #include "memory/metaspace.hpp" #include "services/diagnosticCommand.hpp" + #include "services/nmtCommon.hpp" ! ! MetaspaceDCmd::MetaspaceDCmd(outputStream* output, bool heap) ! : DCmdWithParser(output, heap) ! , _show_loaders("loaders", "Shows usage by class loader.", "BOOLEAN", false, "false") ! , _by_chunktype("by_chunktype", "Break down numbers by chunk type.", "BOOLEAN", false, "false") ! , _by_spacetype("by_spacetype", "Break down numbers by loader type.", "BOOLEAN", false, "false") ! , _show_vslist("vslist", "Shows details about the virtual space list", "BOOLEAN", false, "false") ! , _show_vsmap("vsmap", "Shows a map of the virtual spaces", "BOOLEAN", false, "false") ! , _show_chunk_freelist("chunk-freelist", "Shows details about the free chunk list", "BOOLEAN", false, "false") ! , _scale("scale", "Memory usage in which to scale. Valid values are: 1, KB, MB or GB (fixed scale) " ! "or \"dynamic\" for dynamically choosen scale.", ! "STRING", false, "dynamic") ! { ! _dcmdparser.add_dcmd_option(&_show_loaders); ! _dcmdparser.add_dcmd_option(&_by_chunktype); ! _dcmdparser.add_dcmd_option(&_by_spacetype); ! _dcmdparser.add_dcmd_option(&_show_vslist); ! _dcmdparser.add_dcmd_option(&_show_vsmap); ! _dcmdparser.add_dcmd_option(&_show_chunk_freelist); ! _dcmdparser.add_dcmd_option(&_scale); } void MetaspaceDCmd::execute(DCmdSource source, TRAPS) { ! // Parse scale value. ! const char* scale_value = _scale.value(); ! size_t scale = 0; ! if (scale_value != NULL) { ! if (strcasecmp("dynamic", scale_value) == 0) { ! scale = 0; ! } else { ! scale = NMTUtil::scale_from_name(scale_value); ! if (scale == 0) { ! output()->print_cr("Invalid scale: \"%s\". Will use dynamic scaling.", scale_value); ! } ! } ! } ! // Parse flags. ! int flags = 0; ! if (_show_loaders.value()) flags |= MetaspaceUtils::rf_show_loaders; ! if (_by_chunktype.value()) flags |= MetaspaceUtils::rf_break_down_by_chunktype; ! if (_by_spacetype.value()) flags |= MetaspaceUtils::rf_break_down_by_spacetype; ! if (_show_vslist.value()) flags |= MetaspaceUtils::rf_show_vslist; ! if (_show_vsmap.value()) flags |= MetaspaceUtils::rf_show_vsmap; ! if (_show_chunk_freelist.value()) flags |= MetaspaceUtils::rf_show_chunk_freelist; ! VM_PrintMetadata op(output(), scale, flags); VMThread::execute(&op); }
< prev index next >