JVM调优经验:
使用性能诊断工具,针端OS层面和java应用层面,GC诊断层面的问题
OS诊断:
1.1、CPU诊断使用TOP命令查看系统平均负载和CPU使用率。
1.2、通过 vmstat 命令可以查看 CPU 的上下文切换次数
1.3、free -m查看内存的使用情况
1.4、I/O iostat可以查看磁盘的读写情况
JAVA应用层面:
1、jstack定位有问题的java进程和线程。
2、JProfiler可对CPU、堆、内存进行分析,可以连接服务器实时监控。
GC诊断
1、jstat命令打印GC的详细信息
参数说明:
Options,选项,我们一般使用 -gcutil 查看gc情况
vmid,VM的进程号,即当前运行的java进程号
interval,间隔时间,单位为秒或者毫秒
count,打印次数,如果缺省则打印无数次
jmap打印java进程堆信息
2、jmap查看堆内对象示例的统计信息,查看classLoader的信息以及finaizer队列。
jmap命令
打印一个类的摘要信息,包括使用的GC算法、对配置信息和各类内存区域内存的使用情况。
描述:生成堆转储快照dump文件
以hprof二进制格式转储Java堆到指定filename的文件中。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。想要浏览heap dump,你可以使用jhat(Java堆分析工具)读取生成的文件。
jstack命令
1、在终端中输入jps查看当前运行的java程序,使用top命令查看使用资源最多的pid
2、使用 jstack -l pid 查看线程堆栈信息
3、分析堆栈信息
阿里巴巴开源的性能分析神器Arthas