JVM知识总结(性能调优)

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

性能调优

何时进行JVM调优?

遇到以下情况,就需要考虑进行JVM调优了:

  • Heap内存(老年代)持续上涨达到设置的最大内存值
  • Full GC 次数频繁
  • GC 停顿时间过长(超过1秒)
  • 应用出现OutOfMemory等内存异常
  • 系统吞吐量与响应性能不高或下降

JVM调优基本原则:

大多数的Java应用不需要进行JVM优化

大多数导致GC问题的原因是代码层面的问题导致的(代码层面)

上线之前,应先考虑将机器的JVM参数设置到最优

减少创建对象的数量(代码层面)

减少使用全局变量和大对象(代码层面)

优先架构调优和代码调优,JVM优化是不得已的手段(代码、架构层面)

分析GC情况优化代码比优化JVM参数更好(代码层面)

JVM调优目标:

延迟:

  • GC低停顿和GC低频率

没有FullGC

高吞吐量

JVM调优步骤:

一般情况下,JVM调优可通过以下步骤进行:

  • 分析GC日志及Dump文件,判断是否需要优化,确定瓶颈问题点
  • 确定JVM调优量化目标
  • 确定JVM调优参数(根据历史JVM参数来调整)
  • 依次调优内存、延迟、吞吐量等指标
  • 对比观察调优前后的差异
  • 不断的分析和调整,直到找到合适的JVM参数配置
  • 找到最合适的参数,将这些参数应用到所有服务器,并进行后续跟踪

JVM调优建议

年轻代和老年代的比例需要结合实际场景调整

  • 由于老年代的GC成本通常都会比年轻代的成本要高许多。
  • 所以建议适当地通过Xmn命令区设置年轻代的大小,最大限度的降低对象晋升到老年代的情况。

合理设置Eden区和Survivor区比例

  • 合理分配Eden区和Survivor区,尽量不要让对象进入老年代。
相关推荐
dyyx1111 小时前
如何从Python初学者进阶为专家?
jvm·数据库·python
尽兴-1 小时前
JVM垃圾收集器深度解析:G1与ZGC
jvm·gc·zgc·g1·垃圾收集器java
qingwufeiyang_5301 小时前
JVM调优实战
jvm
u0109272715 小时前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
m0_706653237 小时前
Python生成器(Generator)与Yield关键字:惰性求值之美
jvm·数据库·python
qq_423233908 小时前
实战:用Python开发一个简单的区块链
jvm·数据库·python
编程(变成)小辣鸡9 小时前
JVM、JRE和JDK 的关系
java·开发语言·jvm
hello 早上好9 小时前
02_JVM 架构模型中“栈式”与“寄存器式”指令集架构
jvm·架构
青槿吖10 小时前
【趣味图解】线程同步与通讯:从抢奶茶看透synchronized、ReentrantLock和wait/notify
java·开发语言·jvm·算法
难得的我们10 小时前
如何为开源Python项目做贡献?
jvm·数据库·python