void ClassStatsDCmd::execute(DCmdSource source, TRAPS) { if (!UnlockDiagnosticVMOptions) { output()->print_cr("GC.class_stats command requires -XX:+UnlockDiagnosticVMOptions"); return; } VM_GC_HeapInspection heapop(output(), true /* request_full_gc */); heapop.set_csv_format(_csv.value()); heapop.set_print_help(_help.value()); heapop.set_print_class_stats(true); if (_all.value()) { if (_columns.has_value()) { output()->print_cr("Cannot specify -all and individual columns at the same time"); return; } else { heapop.set_columns(NULL); } } else { if (_columns.has_value()) { heapop.set_columns(_columns.value()); } else { heapop.set_columns(DEFAULT_COLUMNS); } } VMThread::execute(&heapop); }
// Implementation of "inspectheap" command // See also: ClassHistogramDCmd class // // Input arguments :- // arg0: "-live" or "-all" static jint heap_inspection(AttachOperation* op, outputStream* out) { bool live_objects_only = true; // default is true to retain the behavior before this change is made const char* arg0 = op->arg(0); if (arg0 != NULL && (strlen(arg0) > 0)) { if (strcmp(arg0, "-all") != 0 && strcmp(arg0, "-live") != 0) { out->print_cr("Invalid argument to inspectheap operation: %s", arg0); return JNI_ERR; } live_objects_only = strcmp(arg0, "-live") == 0; } VM_GC_HeapInspection heapop(out, live_objects_only /* request full gc */, true /* need_prologue */); VMThread::execute(&heapop); return JNI_OK; }
void ClassHistogramDCmd::execute(DCmdSource source, TRAPS) { VM_GC_HeapInspection heapop(output(), !_all.value() /* request full gc if false */); VMThread::execute(&heapop); }
void ClassHistogramDCmd::execute(TRAPS) { VM_GC_HeapInspection heapop(output(), !_all.value() /* request full gc if false */, true /* need_prologue */); VMThread::execute(&heapop); }