背景:

复制回收算法是两块相同空间,使用某一块,用完之后再把存活对象移动到另一块空间。

HotSpot使用的复制算法是三块空间S1 S2 Eden,并按照1:1:8的初始比例分配。

问题:

1、HotSpot这种三区划分方法与两区等分划分的不同意义在于哪里?

2、HotSpot中进行Survivor和Eden区域大小调优的思路与意义是什么?

思考:

1、对象多数“朝生夕死”(据IBM统计为98%,HotSpot的划分方案出现在此统计之前),

比如一共有10G的内存,在使用等分复制回收,有两块4G内存,同一时间能够利用并分配的是5G,还有5G空间只存放少量存活对象(如果有所谓的晋升,那么其他的晋升老年代)。

而使用HotSpot的三区划分,我们有S1=1G S2=1G Eden=8G,这样同一时刻能够利用并分配的是8G,并且同一时刻上一轮GC后存活的少量对象一般都在S区(其他的晋升老年代)。

相比之下,同样的内存下,三区划分能够利用更多的内存大小,提高内存利用率。用于分配的空间多了,GC的频率也相应减少(当然一次回收的内存区域变大也会使回收时间相对长些,但内存利用率更高,当为了回收时间相同而要求回收的内存区域大小相同时,三区划分需要消耗的总内存更少)。

2、在HotSpot中进行Survivor和Eden区域大小调优,因为S1=S2,所以指定的是Survivor与Eden之间的大小比例。假定最合适的Eden/Survivor=N,实际Eden/Survivor=R 那么3种情况:

(1)R>N

Eden区偏大,Survivor偏小,这样每次回收后Survivor区域经常无法容纳存活下来的对象时,就会导致更频繁老年代GC甚至触发Full GC

(2)R=N 刚刚好

(3)R<N

Eden区偏小,Survivor偏大,这样每次回收后Survivor区域是相对够用的,不会导致过于频繁的老年代GC,但是新生代回收的频率会相对比较高

而我们在对Survivor和Eden区域大小调优时,尽量去寻找R=N这样一个平衡点。当然,当存活率较高的时候,这种复制算法的效率就会降低——也就需要额外的空间担保,即老年代的应用场景。

以上为思考结论,需要结合实际应用进一步分析。

HotSpot的新生代三区划分好在哪?相关推荐

  1. JVM存储区划分及是否线程隔离

    Java面试题--JVM存储区划分及是否线程隔离 JVM系统划分 运行时数据区划分 一道单选题 JVM系统划分 java虚拟机包括一个类加载器子系统(Class Loader SubSystem).运 ...

  2. C/C++内存分配、内存区划分、常量存储区、堆、栈、自由存储区、全局区(静态区)、代码区

    C/C++内存分配.内存区划分.常量存储区.堆.栈.自由存储区.全局区 C++中,内存分成几个区: 栈(stack) 堆(heap) 自由存储区 全局/静态存储区 常量存储区 代码区 对于C++的内存 ...

  3. 一段三次分拆的蚂蚁搬家式MySQL迁移经历

    趁机房搬迁的机会,打算做一次业务整合.现有的架构是在2010年规划并运营起来的,随着时间的推移,项目也越来越多.打开Nginx配置文件,有四十多行Include包含存在,每一个包含就是一个项目(有些是 ...

  4. 一百馒头一百僧,大僧三个更无争,小僧三人分一个大小和尚得几丁?

    如题:一百馒头一百僧,大僧三个更无争,小僧三人分一个大小和尚得几丁? 要求使用java实现求得大僧小僧各有多少人? public class shdjshj {public static void m ...

  5. 算法复习第三章分治法

    算法复习第三章分治法 循环日程表 最近点对 快速排序: 循环日程表 最近点对

  6. 三姬分金/四姬分金/五姬分金(海盗分金币)等经典博弈论问题

    题目: A.B.C三人分100枚金币,按顺序提议. 规则:提议未获得半数以上(不包括半数)通过,则提议人被处死. 假如你是A,你会怎么提? 从后往前推 如果只剩下B.C 无论B怎么提议,C都不会同意, ...

  7. 由“三姬分金”到“海盗分金”

    "秦时明月--天行九歌篇"中有这么一章:"三姬分金". http://www.tudou.com/albumplay/QxZOIU2BloQ/B4u0I7Vxm ...

  8. 算法导论(三)--分治法

    算法导论(三)--分治法 二分查找 乘方问题 斐波那契数列 矩阵乘法 VLSI(Very Large Scale Integration) Layout(超大规模集成电路布局问题) 分治法就是把一个大 ...

  9. 《资治通鉴》—— 三家分晋

    原文: (威烈王二十三年)初命晋大夫魏斯.赵籍.韩虔为诸侯. 初,智宣子将以瑶为后.智果曰:"不如宵也.瑶之贤于人者五,其不逮者一也.美鬓长大则贤,射御足力则贤,伎艺毕给则贤,巧文辩慧则贤, ...

最新文章

  1. html标题怎么分开,html – 如何使用angularjs将标签标题与其主体分开?
  2. xcode 怎么调用midi开发录音_如何组建个人录音工作室
  3. 如何在Go中实现Elasticsearch
  4. 常规RPC通讯过程【转载】
  5. i java 字节码_用java字节码解释i++和++i
  6. Mac/Linux使用fcrackzip
  7. java rfc接口_java调用sap的RFC接口
  8. java模拟抛硬币_用随机数模拟抛硬币
  9. 新建springboot项目一直转圈圈
  10. 用python根据生日判断星座_pandas如何将生日按星座分组
  11. 微擎上传图片失败——加密版本不能使用__DIR__或者__FILE__
  12. 鸿蒙宴中的人物故事,鸿门宴简介_鸿门宴的主要人物和背景_鸿门宴的目的和结局是什么? - 趣历史...
  13. SQL Server 下取中位数(中位值)的方法
  14. DAY2-Ubuntu主题与终端的美化
  15. 新手从0-1的淘宝客创业之路 新手淘客必读
  16. html输入密码正确后实现弹窗,仿微信输入支付密码的弹窗
  17. 小白经济学(一)—经济学是什么
  18. jQuery调用打印机
  19. windows自带win+shift+s截图快捷键没反应---与Onenote热键冲突--已解决
  20. 【信号去噪】基于稀疏性 (BEADS) 实现色谱基线估计和去噪附matlab代码和论文

热门文章

  1. 蒙城县有4000多年,夏为禹贡豫州之域
  2. 华为模拟器配置S5700交换机OSPF案例
  3. vmdk和img相互转换
  4. 有功、无功、视在功率及功率因素
  5. 用监控摄像机搭建视频直播系统的方式
  6. 权威大赛|2022 CCF大数据与计算智能大赛火热报名中
  7. 合同节水服务认证国内怎么申请?
  8. java陆小凤的游戏_陆小凤之金鹏王朝游戏
  9. 算法编程10:岛屿的最大面积
  10. Python用户管理系统,宠物管理系统