src/share/vm/services/diagnosticCommand.cpp
Print this page
*** 52,61 ****
--- 52,63 ----
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<PrintVMFlagsDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VMDynamicLibrariesDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<VMUptimeDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<SystemGCDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<RunFinalizationDCmd>(full_export, true, false));
+ DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<HeapInfoDCmd>(full_export, true, false));
+ DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<FinalizerInfoDCmd>(full_export, true, false));
#if INCLUDE_SERVICES // Heap dumping/inspection supported
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<HeapDumpDCmd>(DCmd_Source_Internal | DCmd_Source_AttachAPI, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHistogramDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassStatsDCmd>(full_export, true, false));
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<ClassHierarchyDCmd>(full_export, true, false));
*** 283,292 ****
--- 285,313 ----
JavaCalls::call_static(&result, klass,
vmSymbols::run_finalization_name(),
vmSymbols::void_method_signature(), CHECK);
}
+ void HeapInfoDCmd::execute(DCmdSource source, TRAPS) {
+ Universe::heap()->print_on(output());
+ }
+
+ void FinalizerInfoDCmd::execute(DCmdSource source, TRAPS) {
+ output()->print_cr("Unreachable instances awaiting finalization");
+
+ Klass *k = SystemDictionary::Finalizer_klass();
+ instanceKlassHandle klass(THREAD, k);
+ JavaValue result(T_OBJECT);
+ JavaCalls::call_static(&result, klass,
+ vmSymbols::print_finalization_queue_name(),
+ vmSymbols::void_string_signature(), CHECK);
+
+ oop result_oop = (oop) result.get_jobject();
+ char *result_str = java_lang_String::as_utf8_string(result_oop);
+ output()->print_cr("%s", result_str);
+ }
+
#if INCLUDE_SERVICES // Heap dumping/inspection supported
HeapDumpDCmd::HeapDumpDCmd(outputStream* output, bool heap) :
DCmdWithParser(output, heap),
_filename("filename","Name of the dump file", "STRING",true),
_all("-all", "Dump all objects, including unreachable objects",