上图是JDK安装目录下的文件列表,这个列表中,一般的同学,应该只用过java和javac这两个命令。
今天我们要说的jvm优化,不是第三方的工具,就是JDK这么目录里自带的命令工具。
1.jps
打印HotSpot VM进程(不要和linux的ps混淆,ps是linux系统的所有在运行进程)。可以查看VMID,JVM参数,main()函数参数,主类名/Jar路径。
2.jstat
查看HotSpot VM运行时信息,包含类加载,内存,GC(可以分代查看),JIT编辑。
命令格式: jstat -gc 线程号 时间间隔 时间间隔内输出次数
查出的数据,各列的含义如下:
看一组真实数据:
S0,S1的大小居然不一样,这只能说明,在我的电脑上,他们取值可能不是准确值。
3.jinfo
查看和修改虚拟机各项配置
4.jmap
heapdump:生成VM堆转储快照,查询finalize执行队列,java堆和永久代详细信息。
用法:
5.jstack
查看VM当前时刻的线程快照:当前vm内每一条线程正在执行的方法堆栈集合(Thread.getAllStackTraces()提供了类似功能)。
6.javap
查看经javac之后产生的JVM字节码代码。自动解析.class文件,避免了去理解class文件格式以及手动解析class文件内容。
7.jcmd
一个多功能工具,可以用来导出堆,查看java进程,导出线程信息,执行GC,查看性能相关数据等的命令,几乎集合了jps,jstat,jinfo,jmap,jstack所有功能
8.jconsole
基于JMX的可视化监视,管理工具。可以查看内存,线程,类,CPU信息,以及对JMX MBean进行管理。
9.jvisualvm
JDK中最强大的运行监视和故障处理工具,可以监控内存泄漏,跟踪垃圾回收,执行时内存分析,CPU分析,线程分析等等。
如果感觉现有功能不够用,还可以下载插件。