jvm 性能调优

jvm 性能调优

1、jvm 内存模型

2、目标

在如下三点中,经过修改jvm参数寻找平衡。html

  • GC的时间足够的小
  • GC的次数足够的少
  • 发生Full GC的周期足够的长

3、方法

  1. 减小使用全局变量和大对象;
  2. 调整新生代的大小到最合适;
  3. 设置老年代的大小为最合适;
  4. 选择合适的GC收集器;

4、经常使用分析工具

  • JConsole:可直接输入jconsole使用。
  • VisualVM:可直接输入jvisualvm使用。
  • jps:主要用来输出jvm中运行的进程状态信息。
  • jstack:主要用来查看某个java进程内的线程堆栈信息。
  • jmap:用来查看堆内存使用状况,通常结合jhat使用。
  • jstat:jvm统计监测工具。

5、补充

常见的性能问题java

  1. cpu load 太高致使系统不可用或者tps(吞吐量)急剧下降
  2. jvm 问题致使tps(吞吐量)下降
    • young gc 次数过多
    • full gc 次数过多
    • full gc 时间长
    • perm space 回收频繁或oom(Out Of Memory)
  3. 重复查询泛滥
  4. 锁竞争或死循环
  5. 链接池链接占用
  6. 不合理的使用集合