JDK命令行工具可以监管虚拟机性能,让程序员了解虚拟机运行状态,对出现的故障进行修复
一般当虚拟机出现问题我们查看其运行日志,异常堆栈,GC日志,线程快照(threaddump),堆转储快照(heapdump)等
一般我们了解的jdk命令行工具就是jdk lib下的java.exe和javac.exe,其实bin目录下也有很多命令行工具主要是监视虚拟机和故障处理的
jps命令
查看虚拟机当前进程状况,列出正在运行的进程的唯一编号LVMID
jstat命令
格式:jstat option vmid interval count
根据进程号LVMID查看当前进程运行情况,是运行期定位虚拟机性能的首选
(如果是本地进程LVMID和VMID是一样的)
option的选项 -gc 监视java堆的情况 -class 监视类装载,卸载数量,以及耗费时间 -gcutil 跟-gc差不多,主要产看各部分年代占空间比例
每隔250毫秒产看进程25144的内存堆情况,检查20次
jinfo命令
Java配置信息工具
格式
jinfo -flag 参数名 pid
产看JVM各种参数信息,区别于jps -v(查看虚拟机启动时的显示指定的参数列表),
这个命令可以根据参数名称参看对应的值
jmap命令
内存映像工具,用于生产堆转储快照(heapdump),还可以查看finalize队列,java堆和永久代详细信息,如空间使用率和使用的哪种回收器
格式:
jmap option vimd
option=[-dump -finalizerinfo -heap -histo -F]
jhat命令
jhat与jmap搭配使用,jhat分析jmap生成的dump快照,是的可以在浏览器查看dump文件
jstack命令
堆栈跟踪工具,在并发中是比较有用的工具
该命令可以生成当前时刻线程的快照,线程快照就是当前虚拟机内每一条线程正在执行的方法的堆栈的集合,生成线程快照的目的是定位线程出现长时间停顿的原因(如是否发生死锁,死循环,请求外部资源时间过程中都可能造成线程长时间停顿)
格式 jstack option vmid
option=[-l 锁的信息 -m 调用本地方法,显示c/c++堆栈]
当然在java.lang.Thread新增方法getAllStackTraces()方法可以实现jstack的大部分功能,但是命令行形式也容易使用
JDK的可视化工具
JConsole:控制台
VisualVM多合一故障处理工具
基于neatbean平台开发,具备插件扩展功能,可以完成上述命令行的所有功能 all in one,jdk1.6之后出现