378 ClassHierarchyDCmd(outputStream* output, bool heap);
379 static const char* name() {
380 return "VM.class_hierarchy";
381 }
382 static const char* description() {
383 return "Print a list of all loaded classes, indented to show the class hierarchy. "
384 "The name of each class is followed by the ClassLoaderData* of its ClassLoader, "
385 "or \"null\" if loaded by the bootstrap class loader.";
386 }
387 static const char* impact() {
388 return "Medium: Depends on number of loaded classes.";
389 }
390 static const JavaPermission permission() {
391 JavaPermission p = {"java.lang.management.ManagementPermission",
392 "monitor", nullptr};
393 return p;
394 }
395 virtual void execute(DCmdSource source, TRAPS);
396 };
397
398 #if INCLUDE_CDS
399 class DumpSharedArchiveDCmd: public DCmdWithParser {
400 protected:
401 DCmdArgument<char*> _suboption; // option of VM.cds
402 DCmdArgument<char*> _filename; // file name, optional
403 public:
404 static int num_arguments() { return 2; }
405 DumpSharedArchiveDCmd(outputStream* output, bool heap);
406 static const char* name() {
407 return "VM.cds";
408 }
409 static const char* description() {
410 return "Dump a static or dynamic shared archive including all shareable classes";
411 }
412 static const char* impact() {
413 return "Medium: Pause time depends on number of loaded classes";
414 }
415 static const JavaPermission permission() {
416 JavaPermission p = {"java.lang.management.ManagementPermission",
417 "monitor", nullptr};
|
378 ClassHierarchyDCmd(outputStream* output, bool heap);
379 static const char* name() {
380 return "VM.class_hierarchy";
381 }
382 static const char* description() {
383 return "Print a list of all loaded classes, indented to show the class hierarchy. "
384 "The name of each class is followed by the ClassLoaderData* of its ClassLoader, "
385 "or \"null\" if loaded by the bootstrap class loader.";
386 }
387 static const char* impact() {
388 return "Medium: Depends on number of loaded classes.";
389 }
390 static const JavaPermission permission() {
391 JavaPermission p = {"java.lang.management.ManagementPermission",
392 "monitor", nullptr};
393 return p;
394 }
395 virtual void execute(DCmdSource source, TRAPS);
396 };
397
398 #if INCLUDE_CDS
399 class AOTEndTrainingDCmd : public DCmd {
400 public:
401 AOTEndTrainingDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
402 static const char* name() { return "AOT.end_training"; }
403 static const char* description() {
404 return "End AOT training and create the cache.";
405 }
406 static const char* impact() {
407 return "Medium: Pause time depends on number of loaded classes";
408 }
409 static const JavaPermission permission() {
410 JavaPermission p = {"java.lang.management.ManagementPermission",
411 "monitor", nullptr};
412 return p;
413 }
414 virtual void execute(DCmdSource source, TRAPS);
415 };
416 #endif // INCLUDE_CDS
417
418 #if INCLUDE_CDS
419 class DumpSharedArchiveDCmd: public DCmdWithParser {
420 protected:
421 DCmdArgument<char*> _suboption; // option of VM.cds
422 DCmdArgument<char*> _filename; // file name, optional
423 public:
424 static int num_arguments() { return 2; }
425 DumpSharedArchiveDCmd(outputStream* output, bool heap);
426 static const char* name() {
427 return "VM.cds";
428 }
429 static const char* description() {
430 return "Dump a static or dynamic shared archive including all shareable classes";
431 }
432 static const char* impact() {
433 return "Medium: Pause time depends on number of loaded classes";
434 }
435 static const JavaPermission permission() {
436 JavaPermission p = {"java.lang.management.ManagementPermission",
437 "monitor", nullptr};
|