虚拟机故障处理工具
JDK中的bin目录下有很多工具,这些工具可以用来检测虚拟机运行情况以及cpu,内存,线程等的监控,比如jps、jstat、jinfo、jmap、jhat、jstatck等。
jps:可以用于查看虚拟机进程的LVMID,可以有三个参数,分别为:q为只输出LVMID,省略主类的名称;m为输出输出虚拟机启动书输出的main函数;l为主类全面,如果执行的是jar包,那么输出jar的路径;v为虚拟机启动时候的jvm参数
jstat:可以显示本地或者远程虚拟机中的类装载,内存,垃圾收集,JIT编译等的运行数据,这将是运行期定位虚拟机性能问题的首选工具。命令格式:jstat [ option vmid [interval[s|ms] [count]]],如果是远程虚拟机进程,那么VMID为:[protocol:][//]lvmid[@hostname[:port]/servername];例如 jstat -gc 2764 250 20 每250查询一次进程ID为2764的虚拟机的垃圾收集信息,总共查询20次。jstat总共分为三类:类装载信息,垃圾收集信息和运行期编译信息。option选项为:-class、-gc、-gccapacity、-gcutil、-gccause、-gcnew、-gcnewcapacity、-gcold、-gcoldcapacity、-gcpermcapacity、-compiler、-printcompilation
jinfo:实时查看和调整虚拟机的参数。可以用-sysprops打印Systemm.getProperties()的内容,可以用-flag [+|-]name 或者 -flag name=value修改一些运行期的虚拟机参数。
jmap:可以用于生成堆转储快照,还可以查询finalize执行队列,java堆和永久代的详细信息,比如空间使用率,当前使用的是那种垃圾收集器等。option:-dump、-finalizerinfo、-heap、-histo、-permstat、-F(当-dump没有响应的时候,可以强制生成dump快照,只能在linux或者solaris中使用)
jhat:虚拟机堆转储快照分析工具,jhat内置一个微型的HTTP/HTML服务器,生成的dump快照可以在浏览器中查看,输入http://localhost:7000/可以查看分析结果。
jstack:用于生成虚拟机当前时刻的线程快照,,生成线程快照主要是为了定位线程出现长时间停顿的原因,比如线程间死锁,死循环,请求外部资源导致的长时间等待等。option:-F、-l、-m;其中-l用于显示锁的附加信息。
可视化工具有jconsole,visualvm,其中visualvm可以安装很多插件,功能强大,VisualGC可以查看垃圾收集器的运行情况以及汇总信息,很实用。
爱情终将消失于茫茫的时间洪流之中,沉淀于厚重的黄泥沙丘之下...