JVM性能调优监控工具之jps、jstack、jmap、jhat、jstat
jps(查看进程)、jstack(查看线程)、jmap(查看内存)、jhat(分析jmap生成的堆转储快照)、jstat(性能分析)
jps
- 查看所有的jvm进程,包括进程ID,进程启动的路径等等。
- 也可以使用PS,即:ps -ef | grep java
jstack
- 观察jvm中当前所有线程的运行情况和线程当前状态。
jmap
- 监视进程运行中的jvm物理内存的占用情况,该进程内存内,所有对象的情况,例如产生了哪些对象,对象数量
jhat
- Sun JDK提供jhat(JVM Heap Analysis Tool)命令与jmap搭配使用,来分析jmap生成的堆转储快照。jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。不过在实际工作中,一般都不会去直接使用jhat命令来分析dump文件,主要原因有二:一是一般不会在部署应用程序的服务器上直接分析dump文件,即使可以这样做,也会尽量将dump文件复制到其他机器上进行分析,因为分析工作是一个耗时而且消耗硬件资源的过程,既然都要在其他机器进行,就没有必要受到命令行工具的限制了;另一个原因是jhat的分析功能相对来说比较简陋,后文将会介绍到的VisualVM,以及专业用于分析dump文件的Eclipse MemoryAnalyzer、IBM HeapAnalyzer 等工具,都能实现比jhat更强大更专业的分析功能。
jstat
- jstat利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对进程的classloader,compiler,gc情况;
- 特别的,一个极强的监视内存的工具,可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量,以及加载类的数量
jinfo
- 观察进程运行环境参数,包括Java System属性和JVM命令行参数
参考