美文网首页
Java 应用如何调优?

Java 应用如何调优?

作者: 魔曦帝天 | 来源:发表于2019-12-27 19:41 被阅读0次

一、节点配额和内核参数调整

  • JVM 配置常用参数

  • 堆参数

  • 回收器参数

  • 项目中常用配置

  • 常用组合

  • 常用 GC 调优策略

  • GC 调优原则

  • GC 调优目的


JVM 配置常用参数

image.png

堆参数

image.png

回收器参数

image.png

如上表所示,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种。并行和并发 GC 的策略通过 UseParallelGC 和 UseConcMarkSweepGC 来指定,还有一些细节的配置参数用来配置策略的执行方式。例如:XX:ParallelGCThreads, XX:CMSInitiatingOccupancyFraction 等。通常:Young 区对象回收只可选择并行(耗时间),Old 区选择并发(耗 CPU)。

项目中常用配置

image.png

常用组合

image.png

常用 GC 调优策略

image.png

GC 调优原则

在调优之前,我们需要记住下面的原则:

多数的 Java 应用不需要在服务器上进行 GC 优化;

多数导致 GC 问题的 Java 应用,都不是因为我们参数设置错误,而是代码问题;

在应用上线之前,先考虑将机器的 JVM 参数设置到最优(最适合);

减少创建对象的数量;

减少使用全局变量和大对象;

GC 优化是到最后不得已才采用的手段;

在实际使用中,分析 GC 情况优化代码比优化 GC 参数要多得多。

GC 调优目的

将转移到老年代的对象数量降低到最小;

减少 GC 的执行时间。

策略 1:将新对象预留在新生代,由于 Full GC 的成本远高于 Minor GC,因此尽可能将对象分配在新生代是明智的做法,实际项目中根据 GC 日志分析新生代空间大小分配是否合理,适当通过“-Xmn”命令调节新生代大小,最大限度降低新对象直接进入老年代的情况。

策略 2:大对象进入老年代,虽然大部分情况下,将对象分配在新生代是合理的。但是对于大对象这种做法却值得商榷,大对象如果首次在新生代分配可能会出现空间不足导致很多年龄不够的小对象被分配的老年代,破坏新生代的对象结构,可能会出现频繁的 full gc。因此,对于大对象,可以设置直接进入老年代(当然短命的大对象对于垃圾回收老说简直就是噩梦)。-XX:PretenureSizeThreshold 可以设置直接进入老年代的对象大小。

策略 3:合理设置进入老年代对象的年龄,-XX:MaxTenuringThreshold 设置对象进入老年代的年龄大小,减少老年代的内存占用,降低 full gc 发生的频率。

策略 4:设置稳定的堆大小,堆大小设置有两个参数:-Xms 初始化堆大小,-Xmx 最大堆大小。

策略5:注意:如果满足下面的指标,则一般不需要进行 GC 优化:

MinorGC 执行时间不到50ms;

Minor GC 执行不频繁,约10秒一次;

Full GC 执行时间不到1s;

Full GC 执行频率不算频繁,不低于10分钟1次。

相关文章

  • Java 应用如何调优?

    一、节点配额和内核参数调整 JVM 配置常用参数 堆参数 回收器参数 项目中常用配置 常用组合 常用 GC 调优策...

  • JMC和JCMD使用

    使用JCMD排查问题 另一份Java应用调优指南之-前菜 另一份Java应用调优指南之-工具篇 Java Miss...

  • Java高架构师、分布式架构、高可扩展、高性能、高并发、性能优化

    性能调优 JVM调优 Java程序性能优化 Tomcat Mysql 应用框架源码解读 Spring IOC Sp...

  • java 调优概要

    Java调优 实际问题 CPU彪高如何处理? 生产环境应该给应用分配多少线程合适? 不加log如何确定请求是否执行...

  • Ergonomics

    Ergonomics是Java虚拟机(JVM)和垃圾收集调优(例如基于行为的调优)改善应用程序性能的过程。JVM为...

  • netty的性能调优和总结

    性能调优 Netty 应用程序性能调优 能不能增加线程的数量 单机百万连接调优解决思路 如何模拟百万连接 突破局部...

  • JVM系列(九):如何优化Java GC

    本文由CrowHawk翻译,地址:如何优化Java GC「译」,是Java GC调优的经典佳作。 Sangmin ...

  • JVM - 调优案例

    JVM - 调优案例 调优问题 线上的java应用,对陈功率和响应事件要求较高,经常出现成功率突然下降又自动恢复的...

  • Java进阶-JVM-调优

    一、Java进阶-JVM-调优   jvm调优主要是针对垃圾收集器的收集性能优化,令运行在虚拟机上的应用能够使用更...

  • java 后端深入

    一. 性能调优 几乎每个JAVA后端开发程序员,都会在面试时碰到诸如如何性能调优的问题,如何回答好这个问题,不仅仅...

网友评论

      本文标题:Java 应用如何调优?

      本文链接:https://www.haomeiwen.com/subject/fbzdoctx.html