【JVM 系列】JVM 调优

本文深入探讨了JVM调优,重点讲述堆空间的设置,分析了如何根据活跃数据大小调整堆分区。讨论了扩容新生代对GC效率的影响,指出在特定场景下可降低Major GC频率。还介绍了JVM如何避免Minor GC扫描全堆,利用卡表技术提升效率。此外,文章详细阐述了常量池的概念和String类的特性,包括其不可变性、创建方式及内存分配。
摘要由CSDN通过智能技术生成

作者:半身风雪
上一节:JVM 中常见的垃圾回收器



前言

性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。 架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。

先来看一张JVM 内存分代的划分图:

image-20220718175743452


一、堆空间如何设置

在分代模型中,各分区的大小对 GC 的性能影响很大。如何将各分区调整到合适的大小,分析活跃数据的大小是很好的切入点。

**活跃数据的大小:**应用程序稳定运行时长期存活对象在堆中占用的空间大小,也就是 Full GC 后堆中老年代占用空间的大小。

可以通过 GC 日志中 Full GC 之后老年代数据大小得出,比较准确的方法是在程序稳定后,多次获取 GC 数据,通过取平均值的方式计算活跃数据的大小。

image-20220718172736209

例如,根据 GC 日志获得老年代的活跃数据大小为 300M&

  • 59
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 51
    评论
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半身风雪

感谢打赏,你的鼓励,是我创作的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值