我们大多数人都知道JDK的bin目录下有“java.exe”、“javac.exe”这两个命令行工具,其实Java为我们提供的工具远不止这两个,这些工具可以帮我们处理应用程序性能问题、定位故障时发挥很大的作用。
一、jps:虚拟机进程状况工具
可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(LVMID)。
命令格式: jps [选项] [hostid]
选项作用:
-q:只输出本地虚拟机唯一ID。
-m:输出传给主类main()函数的参数。
-l:输出类的限定名,如果进程时jar包,输出jar包路径。
-v:虚拟机进程启动时JVM参数。
执行样例:
二、jstat:虚拟机统计信息监视工具
用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。
命令格式: jstat [ 选项 vmid [ interval [s|ms] [count] ] ]
参数说明:vmid本地虚拟机进程的话与LVMID一致,远程应为[protocol:][//]lvmid[@hostname[:port]/servername]
interval代表查询间隔,默认ms;count代表查询次数。如果不加这两个参数,默认查询一次。
例如:每1秒查询一次进程7844的垃圾收集情况,一种查询10次:jstat -gc 7844 1s 10
选项作用:
具体输出结果含义参考https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html
三、jinfo:Java配置信息工具
实时地查看和调整虚拟机各项参数。
命令格式:jinfo [ 选项 ] pid
查看堆内存配置大小如下:
四、jmap:Java内存映像工具
主要用于生成堆转储快照(一般称为heapdump或dump文件)
命令格式:jmap [ 选项] vmid
选项作用:
-dump:生成Java堆转储快照。格式为jmap -dump:[live,]format=b,file=<fileName> vmid,其中live子参数说明是否只dump出存活对象。
-finalizerinfo:显示在F-Queue中等待Finalizer线程执行finalize方法的对象。
-heap:显示Java堆详细信息,如使用那种回收器、参数配置、分代状况等。
-histo:显示堆中对象统计信息,包括类、实例数量、合计容量。
-F:当虚拟机进程堆-dump选项没有响应时,可以使用这个选项强制生成dump快照。
生成dump快照的例子:
五、jhat:虚拟机堆转储快照分析工具
与jmap搭配使用,来分析jmap生成的堆转储快照。jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。(基本不会用这个来分析,都用专业的软件)
使用jhat分析上一步生成的dump文件:
显示“Server is ready.”的提示后,用户在浏览器中键入http://localhost:7000/就可以看到分析结果,如下所示
六、jstack:Java堆栈跟踪工具
用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。
命令格式:jstack [选项] vmid
选项作用:
-F:强制输出线程堆栈。
-l:除堆栈外,显示关于锁的附加信息。
-m:如果调用到本地方法的话,可以显示C/C++的堆栈。
标签:选项,快照,JDK,dump,虚拟机,线程,命令行,工具 From: https://blog.51cto.com/caofanqi/5754592