前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题27:GC算法——复制算法

面试题27:GC算法——复制算法

作者头像
爪哇缪斯
发布2023-05-09 21:38:39
1510
发布2023-05-09 21:38:39
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯

复制算法如下图所示:

  • 为了解决效率问题,复制算法应运而生。
  • 优点:

执行效率很高。

可以保证回收后的内存空间没有碎片。

  • 缺点:

内存空间只能使用1/2

  • 总结原理:

因为90%以上的新生代对象生命周期都很短暂,并且GC在新生代回收的特点就是频率高,耗时低,所以:针对以上特点,JVM垃圾收集器都采用复制算法来回收新生代。

  • 复制算法在JVM堆中的应用
  • 由于Eden区于S0和S1比例默认是8:1:1,新生代的空间=Eden区+S0/S1=90%,那么浪费的空间也只有10%而已。
  • 设置Eden区与Survivior区比例的jvm参数

-XX:SurvivorRatio

  • 设置BigObject的jvm参数

-XX:PretenureSizeThreshold

  • 设置OldObject的jvm参数

-XX:MaxTenuringThreshold 每次Minor GC,年龄加一岁。tenure:任期。

  • 查看JVM某个参数的值:
代码语言:javascript
复制
muse@muse:/Users/muse/Desktop> jinfo -flag SurvivorRatio 11303                                   
-XX:SurvivorRatio=8
muse@muse:/Users/muse/Desktop> jinfo -flag PretenureSizeThreshold 11303                         
-XX:PretenureSizeThreshold=0 // 默认值是0,意思是不管多大都是先在eden中分配内存
muse@muse:/Users/muse/Desktop> jinfo -flag MaxTenuringThreshold 11303                      
-XX:MaxTenuringThreshold=15
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档