经过前面的学习,我们已经掌握虚拟机运行的基本理论知识,但是我们最终的目的还是将这些知识应用到实际工作中去。
一、JDK的命令行工具
java开发人员都应该知道JDK的bin目录中有“java.exe”和“javac.exe”两个命令行工具,但是当我们打开时候会发现里面还有很多其他的工具,接下来就来说说几款有用的工具:
- jps:虚拟机进程状况工具,功能和UNIX中的ps命令类似,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier,LVMID),是使用率最高的命令行工具。
- jstat:虚拟机统计信息监视工具,用于监视虚拟机各种运行状态信息的命令行工具,他可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等运行数据,是早期定位虚拟机性能问题的主要工具。
- jinfo:java配置信息工具,实时查看和调整虚拟机各项参数。
- jmap:java内存映像工具,用于生成堆转储快照。
- jhat:虚拟机堆转储快照分析工具,主要与jmap工具配合使用,来分析其生成的堆转储快照。
- jstack:java堆栈跟踪工具,用于生成虚拟机当年时刻的线程快照。线程快照指的是当前虚拟机内内每一条线程正在执行的方法堆栈的集合。
- HSDIS:JIT生成代码反汇编,详细描述虚拟机指令集中每条指令的执行过程、执行前后对操作数栈、局部变量表的影响等细节。
二、JDK的可视化工具
- JConsole是一种基于JMX的可视化监视、管理工具,主要是监视部分,位置就在JDK的bin目录下的“jconsole.exe”,启动之后,它会自动扫描搜索所有的进程,选择你需要查看的继承即可,里面的内存监控和线程监控以及其他的一些功能都是囊括了前面命令行中的功能,可以说极大地方便了使用者的查看。
- VisualVM是一种多合一的故障处理工具,也是官方主力发展的虚拟机处理工具,可以自行下载使用,并且里面集成了很多有用的插件,具有生成浏览堆转储快照、分析程序性能、BTrance动态日志跟踪等功能。