JDK监视故障处理工具jps--虚拟机进程显示工具jstat--虚拟机统计监视工具jinfo--虚拟机配置信息工具jmap--虚拟机内存映像工具jhat--虚拟机HeapDump分析工具jjp
jdk本身提供了一个内置工具,用于确定与java相关的生产问题。 这些嵌入式工具已充分用于应对大多数常见的生产问题。 这里总结介绍了jdk附带的命令行和可视化工具。
jps虚拟机进程显示工具
与ps命令一样,输出虚拟机的进程信息。 第一列中的LVMID和pid匹配。
jst at虚拟机统计监视工具监视虚拟机统计监视工具、虚拟机的各种运行状态,例如GC的统计信息。
例如,每250毫秒调查一次过程垃圾的收集情况,一共调查20次。
#格式: jst at [ option ] lvmidintervalcount $ jst at-GC 1793625020
说明:
C:容量U:使用量E:eden区域o :上一代M:元数据区域YGC:YoungGC次数YGCT:YoungGC总时间FGC:FullGC次数FGCT:FullGC总时间j info虚拟机配置信息内容
例如,参见过程17936的System.properties ()信息
jinfo -sysprops 17936
查看按年代列出的触发器GC $ j info-flagcmsinitiatingoccupancyfraction 17936
jmap-虚拟机内存映像工具jmap命令用于生成heapdump文件或堆转储的快照。
其他方式为- xx : heapdumponoutofmemoryerror或kill -3 pid
#进程包含jeffdump.bin $ jmap-dump : format=b,file=jeffdump.bin 17936#打印c :_ SERS _ administration file=jfile 管理员 jeffdump.bin . heapdumpfilecreatedjhat虚拟机HeapDump
不会直接在服务器上用jhat分析dump。 毕竟需要时间和资源,而且jhat的分析功能很差,所以一般使用VisualVM和Eclipse Memory Analyzer。
$ jhat jeffdump.binc :usersadministratorjhatjeffdump.binreadingfromjeffdump.bin.dumpfilecreatedwedapr 291733333 resolving . resolving 1831310 objects . chasing references, Expect 366文档.....................................................................................打开snapshot resolved.startedhttpserveronport 7000 serverisready .浏览器: http://localhost:7000/
分析内存泄漏问题的主要方法是使用Heap Histogram,可以在内存中找到总容量最大的对象
jstack-Java堆栈跟踪工具生成虚拟机的当前线程快照,即threaddump或javacore文件。 这意味着当前虚拟机中每个线程正在运行的方法堆栈的集合,可用于确定线程长时间停止的原因,包括线程之间的死锁、死锁周期和由于外部资源请求而导致的长时间等待。
$jstack -l 17936 Jconsole和VisualVM jconsole和visualVM是jdk提供的两个可视化监控工具。 VisualVm是jdk发布的最强大的运行监视和故障处理工具。 不比专业费用的Jprofiler、youkit逊色多少。
VisualGC:是jdk不附带的工具,IDEA上也可以安装插件。
jmc: BEA公司JDK拥有的工具。 需要安装oracle的jdk。 生产环境中不推荐,太重可能会干扰在线服务。
visualVM是一个分析内存溢出异常的CMS收集器,如果GC有98%以上的时间,并且只恢复小于2%的内存,则抛出OOM:GC overhead limit exceeded。 但是,可以设置-XX:-UseGCOverheadLimit来关闭此异常抛出。
但是,仍然有可能抛出OOM:Java Heap sapce异常! 或oom : unabletocrearenewnativethread。
使用jdk附带的工具java VisualVM进行分析
由- xms 20m-xmx 20m-xx : heapdumponoutofmemoryerror生成的java_pid9516.hprof文件也可以在Eclipse Memory Analyzer中打开。