最近 再看java虚拟机这一块的知识,想总结一下关于jdk的命令行工具,供日后工作需要时查阅。
由于jdk的版本不同,有些工具的参数等会有些差异,我在书中看到的是使用的jdk1.6,而我自己电脑上使用的jdk版本是1.8
jdk的命令行工具总结:
cmd进入 JDK的bin 目录下
(一)jps(虚拟机进程状况工具)
显示指令系统内所有的HotSpot虚拟机进程
如下图,我启动了主函数MainApplication和DMCServiceApplication
可以显示虚拟机正在运行的进程,显示虚拟机执行的主函数的名称以及本地虚拟机唯一ID(LVMID),在此基础上,其他的操作可以根据ID来监控虚拟机,jps的几个参数如下:
(二)jstat(虚拟机统计信息监视工具)
用于监视虚拟机各种运行状态信息 。命令格式为:
对于本地虚拟机,vmid与LVMID一样,如果是远程虚拟机,那么vmid的格式为;
interval代表查询间隔,count代表查询次数,默认查询一次,
例如:250ms查询进程ID为:27248的垃圾收集情况,查询20次
jstat -gc 27248 250 20
jstat工具的参数如下所示:
jstat -gcutil 27248 进程所占空间百分比显示
E(新生代Eden区),S0,S1(Survivor),O(Old老年代),YGC(Young GC)9次,耗时0.063s,FGC(Full GC)3次,耗时0184s,
(三)jinfo(java配置信息工具)
实时查看和调整虚拟机参数。
使用jps可以查看虚拟机启动时显示指定的参数:
27248 MainApplication -XX:TieredStopAtLevel=1 -Xverify:none -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -javaagent:D:\software\IntelliJ IDEA 2018.3.5\lib\idea_rt.jar=61821:D:\software\IntelliJ IDEA 2018.3.5\bin -Dfile.encoding=UTF-8
查看进程的CMSInitiatingOccupancyFraction参数值:
(四)jmap(Java内存映像工具)
用于生成堆转储快照(heapdump),具体参数如下:
(五)jstack(Java堆栈跟踪工具)
用于生成当前线程虚拟机当前时刻的快照,线程快照是当前虚拟机内 每一条方法正在执行的方法堆栈集合,定位线程出现长时间停顿的原因,通过jstack查看各个线程的调用堆栈,查看线程正在做些什么事情,或者正在等待什么操作。
参数如下:
jstack -l +进程ID
可视化工具:
(一)JConsole:java监视与管理平台
进入jdk/bin下,点击jconsole.exe,如下图所示:
(二)VisualVM多合一故障处理工具
注:
插件:BTrace 动态日志跟踪。在不停止当前运行程序的情况下,加入程序中本身不存在的调试代码,在排查错误时,因为缺少必要的排查信息,方法,属性等打印信息,不得不停止当前正在运行的程序,在当前程序无法停止的情况下,可以使用插件,动态插入调试代码。