JVM的调优

jvm调优:
1. 调优时机:
a. heap 内存(⽼年代)持续上涨达到设置的最⼤大内存值;
b. Full GC 次数频繁;
c. GC 停顿时间过⻓长(超过1秒);
d. 应⽤用出现OutOfMemory 等内存异常;
e. 应⽤用中有使⽤用本地缓存且占⽤用⼤大量量内存空间;
f. 系统吞吐量与响应性能不不⾼高或下降。
2. 调优原则:
a. 多数的Java应⽤用不不需要在服务器器上进⾏行行JVM优化;
b. 多数导致GC问题的Java应⽤用,都不不是因为我们参数设置错误,⽽而是代码问题;
c. 在应⽤用上线之前,先考虑将机器器的JVM参数设置到最优(最适合);
d. 减少创建对象的数量;
e. 减少使⽤用全局变量和大对象;
f. JVM优化是到最后不不得已才采⽤用的⼿手段;
g. 在实际使⽤用中,分析GC情况优化代码⽐比优化JVM参数更更好;
3. 调优⽬目标:
a. GC低停顿;
b. GC低频率;
c. 低内存占⽤用;
d. ⾼高吞吐量量;
4. 调优步骤:
a. 分析GC⽇日志及dump⽂文件,判断是否需要优化,确定瓶颈问题点;
b. 确定jvm调优量量化⽬目标;
c. 确定jvm调优参数(根据历史jvm参数来调整);
d. 调优⼀一台服务器器,对⽐比观察调优前后的差异;
e. 不不断的分析和调整,知道找到合适的jvm参数配置;
f. 找到最合适的参数,将这些参数应⽤用到所有服务器器,并进⾏行行后续跟踪。
12、 jvm调优参数:
1. 设定堆内存⼤大⼩小,这是最基本的。
2. -Xms:启动JVM时的堆内存空间。
3. -Xmx:堆内存最⼤大限制。
4. 设定新⽣生代⼤大⼩小。
5. 新⽣生代不不宜太⼩小,否则会有⼤大量量对象涌⼊入⽼老老年年代。
6. -XX:NewRatio:新⽣生代和⽼老老年年代的占⽐比。
7. -XX:NewSize:新⽣生代空间。
8. -XX:SurvivorRatio:伊甸园空间和幸存者空间的占⽐比。
9. -XX:MaxTenuringThreshold:对象进⼊入⽼年代的年年龄阈值。
10. 设定垃圾回收器
年轻代: -XX:+UseParNewGC。
⽼年代: -XX:+UseConcMarkSweepGC。
CMS可以将STW时间降到最低,但是不不对内存进⾏行行压缩,有可能出现“并⾏行行模式失败”。⽐比如⽼老老年年代空间还有300MB空间,但是
⼀一些10MB的对象⽆无法被顺序的存储。这时候会触发压缩处理理,但是CMS GC模式下的压缩处理理时间要⽐比Parallel GC⻓长很多。
G1采⽤用”标记-整理理“算法,解决了了内存碎⽚片问题,建⽴立了了可预测的停顿时间类型,能让使⽤用者指定在⼀一个⻓长度为M毫秒的时间段
内,消耗在垃圾收集上的时间不不得超过N毫秒

  

 

posted @ 2022-03-10 15:02  小小菜包子  阅读(88)  评论(0)    收藏  举报