jvm 性能调优
2、目标
在如下三点中,经过修改jvm参数寻找平衡。html
- GC的时间足够的小
- GC的次数足够的少
- 发生Full GC的周期足够的长
3、方法
- 减小使用全局变量和大对象;
- 调整新生代的大小到最合适;
- 设置老年代的大小为最合适;
- 选择合适的GC收集器;
4、经常使用分析工具
- JConsole:可直接输入
jconsole
使用。
- VisualVM:可直接输入
jvisualvm
使用。
jps
:主要用来输出jvm中运行的进程状态信息。
jstack
:主要用来查看某个java进程内的线程堆栈信息。
jmap
:用来查看堆内存使用状况,通常结合jhat使用。
jstat
:jvm统计监测工具。
5、补充
常见的性能问题java
- cpu load 太高致使系统不可用或者tps(吞吐量)急剧下降
- jvm 问题致使tps(吞吐量)下降
- young gc 次数过多
- full gc 次数过多
- full gc 时间长
- perm space 回收频繁或oom(Out Of Memory)
- 重复查询泛滥
- 锁竞争或死循环
- 链接池链接占用
- 不合理的使用集合