#解锁jdk的商业特性 jcmd [pid] VM.unlock_commercial_features #jfr jcmd 7060 JFR.start duration=60s filename=myrecording.jfr #查看运行的 java 进程 jcmd 录制记录(Start a recording) 示例:在指定Java进程(7060)上开始2分钟记录,并保存到当前目录的myrecording.jfr文件中 jcmd 7060 JFR.start name=MyRecording settings=profile delay=20s duration=2m filename=C:TEMPmyrecording.jfr 检查记录(Check a recording) JFR.check检查正在运行的记录,如: jcmd 7060 JFR.check 停止记录(Stop a recording) JFR.stop命令停止正在运行的记录,如: jcmd 7060 JFR.stop 转储记录(Dump a recording) JFR.dump命令停止正在运行的录制,并将记录存储到record文件,如: jcmd 7060 JFR.dump name=MyRecording filename=C:TEMPmyrecording.jfr 创建堆转储(Create a heap dump) 创建堆转储首选方法: jcmd 420 GC.heap_dump ./33848dump.hprof 创建堆直方图(Create a heap histogram) 创建堆直方图首选方法: jcmd <pid> GC.class_histogram ./33848dump.hprof
#通用命令 #不同版本的HotSpot VM可用的诊断命令有所不同,使用jcmd <process id/main class> help,查看当前版本支持的可用选项。 #以下是自JDK 8以来,该工具中一些最有用的命令。 #注:始终通过jcmd <process id/main class> help <command>获取可用选项。 #JDK版本信息 jcmd <process id/main class> VM.version #VM系统参数 #显示数百行信息。 jcmd <process id/main class> VM.system_properties #VM所有标志参数 #即使,没有提供标志,也会打印一些默认值,如:初始/最大堆大小。 jcmd <process id/main class> VM.flags #以秒为单位打印运行时间 jcmd <process id/main class> VM.uptime #建类直方图 #结果可能相当冗长,将输出重定向到文件。 #内部和特定应用程序类都包含在列表中,占用最多内存的类排在最顶端,按降序对类进行排列。 jcmd <process id/main class> GC.class_histogram #创建堆转储(hprof dump) jcmd GC.heap_dump filename=Myheapdump #与jmap -dump:file=<file> <pid>效果相同, 推荐使用jcmd工具。 #创建堆直方图 jcmd <process id/main class> GC.class_histogram filename=Myheaphistogram #与jmap -histo <pid>效果相同,推荐使用jcmd工具。 #打印所有线程堆栈跟踪 jcmd <process id/main class> Thread.print