【每日一问】jvm优化原则是什么
jvm优化原则是什么
尽可能让对象都在新生代里分配和回收,尽量别让太多对象频繁进入老年代,避免频繁对老年代进行垃圾回收,同时给系统充足的内存大小,避免新生代频繁的进行垃圾回收。核心是STW的时间,相对于YoungGC,FullGC会有很长的STW时间。所以JVM优化首先就是减少FullGC执行次数和时间。
怎样减少FullGC?
就是让对象尽可能少的进入老年代!对象进入老年代有四个条件:
- 存活对象达到年龄阈值(默认为15)根据实际情况可以通过参数 -XX:MaxTenuringThreshold 来设置年龄阈值
- 大对象直接进入老年代(超过了JVM中-XX:PretenureSizeThreshold参数的设置)
- Survivor中如果有年龄1+年龄2+… 年龄n的对象所占空间大于Survivor的一半,那么年龄大于等于年龄n的对象就可以直接进入老年代。(动态对象年龄判定)
- Young GC后,Survivor区空间不能容纳全部存活对象,直接进入老年代。
- 针对条件2:所以在写程序的时候要尽量避免大对象,更要尽量避免朝生夕死的大对象
- 针对条件3:Survivor区要足够大,每次YGC剩余的存活对象最好不超过Survivor的一半
- 针对条件4:Survivor要足够大
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 dreamer
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

