JVM性能调优
一、概述
1、背景说明
2、性能优化的步骤
3、性能评价指标
二、JVM监控及诊断工具-命令行篇
1、-jps:查看正在运行的Java进程
1.1、基本情况
1.2、测试
1.3、基本语法
jps -v
2、-jstat:查看JVM统计信息
2.1、基本情况
2.2、基本语法
-
option参数
- 类装载相关:
-class
:显示ClassLoader的相关信息:类的装载、卸载数量、总空间、类装载所消耗的时间等。 - 垃圾回收相关
-gc
:显示与GC相关的堆信息。包括Eden区,两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计信息。-gccapacity
:显示内容与-gc
基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间。-gcutil
:显示内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比。-gccause
:与-gcutil
功能一样,但是会额外输出导致最后一次或当前正在发生的GC产生的原因。-gcnew
:显示新生代GC状况-gcnewcapacity
:显示内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间-geold
:显示老年代GC状况-gcoldcapacity
:显示内容与-gcold
基本相同,输出主要关注使用到的最大、最小空间。-gcpermcapacity
:显示永久代使用到的最大、最小空间。
- JIT相关:
-compiler
:显示JIT编译器编译过的方法、耗时等信息。printcompilation
:输出已经被JIT编译的方法。
- 类装载相关:
-
interval参数
:用于指定输出统计数据的周期,单位为毫秒。即:查询间隔
-
count参数
:用于指定查询的总次数
-
-t参数
:可以在输出信息前加上一个Timestamp列,显示程序的运行时间。
-
-h参数
:可以在周期性数据输出时,输出多少行数据后输出一个表头信息
3、-jinfo:实时查看和修改JVM配置参数
3.1、基本情况
3.2、基本语法
3.3、拓展
4、-jmap:导出内存映像文件&内存使用情况
4.1、基本情况
4.2、基本语法
4.3、使用1:导出内存映像文件
4.4、使用2:显示堆内存相关信息
4.5、使用3:其他作用
小结
5、-jhat:JDK自带堆分析工具(了解)
5.1、基本情况
5.2、基本语法
6、-jstack:打印JVM中线程快照
6.1、基本情况
6.2、基本语法
7、-jcmd:多功能命令行
7.1、基本情况
7.2、基本语法
8、-jstatd:远程主机信息收集
三、JVM监控及诊断工具-GUI篇
1、工具概述
2、-jConsole
2.1、基本情况
2.2、启动
2.3、三种连接方式
3、-Visual VM
3.1、基本概述
3.2、插件安装
JDK自带的Visual VM
JVisual VM客户端
IDEA插件