< prev index next >

src/hotspot/share/services/diagnosticCommand.hpp

Print this page

        

@@ -423,10 +423,36 @@
   }
   static int num_arguments();
   virtual void execute(DCmdSource source, TRAPS);
 };
 
+class PrintClassLayoutDCmd : public DCmdWithParser {
+protected:
+  DCmdArgument<char*> _classname; // lass name whose layout should be printed.
+public:
+  PrintClassLayoutDCmd(outputStream* output, bool heap);
+  static const char* name() {
+    return "VM.class_print_layout";
+  }
+  static const char* description() {
+    return "Print the layout of an instance of a class, including flattened fields. "
+           "The name of each class is followed by the ClassLoaderData* of its ClassLoader, "
+           "or \"null\" if loaded by the bootstrap class loader.";
+  }
+  static const char* impact() {
+      return "Medium: Depends on number of loaded classes.";
+  }
+  static const JavaPermission permission() {
+    JavaPermission p = {"java.lang.management.ManagementPermission",
+                        "monitor", NULL};
+    return p;
+  }
+  static int num_arguments();
+  virtual void execute(DCmdSource source, TRAPS);
+};
+
+
 class TouchedMethodsDCmd : public DCmdWithParser {
 public:
   TouchedMethodsDCmd(outputStream* output, bool heap);
   static const char* name() {
     return "VM.print_touched_methods";
< prev index next >