Java千百问_07JVM架构(009)_什么是新生代的复制算法
2016-05-28 10:23
429 查看
点击进入_更多_Java千百问
了解java垃圾回收看这里:java垃圾回收机制是什么
所谓复制算法(Copying),即将内存平均分成A区、B区两块,进行复制+清除垃圾的操作,算法图解如下:
算法过程:
新生对象被分配到A块中未使用的内存当中。当A块的内存用完了, 把A块的存活对象复制到B块。
清理A块所有对象。
新生对象被分配到B块中未使用的内存当中。当B块的内存用完了, 把B块的存活对象复制到A块。
清理B块所有对象。
循环1。
这种算法简单高效,但是内存代价极高,有效内存只为总内存的一半,会浪费掉50%的空间。所以这种算法只是纸面算法,不具备可用性,一般来说都会使用优化的复制算法。
Eden/S0/S1默认空间比例Eden:S0:S1为8:1:1,有效内存(即可分配新生对象的内存)是总内存的90%。
算法过程:
Eden+S0可分配新生对象;
对Eden+S0进行垃圾收集,存活对象复制到S1。清理Eden+S0。一次新生代GC结束。
Eden+S1可分配新生对象;
对Eden+S1进行垃圾收集,存活对象复制到S0。清理Eden+S1。二次新生代GC结束。
循环1。
我们可以看出,如果Eden/S0/S1三个空间的比例为8:1:1,则可能会出现Eden+S0中存活对象超过了总空间的10%(S1、S0的空间都是总空间的10%),在这种情况下,新生代GC会将存活周期长的对象直接放入老生代,而无需达到我们设置的阈值(转入老生代的存活次数,-XX:MaxTenuringThreshold)。
当然,这种情况在正常情况下不会出现(除非特殊场景,或者程序设计问题)。IBM的专门研究表明,新生代中的对象98%是朝生夕死的,所以8:1:1的比例是十分合理的。(每次新生代中可用内存空间为整个新生代容量的90%(80%+10%),只有10%的内存是会被浪费的)。
1、什么是新生代的复制算法
了解堆内存看这里:java堆内存是什么样的了解java垃圾回收看这里:java垃圾回收机制是什么
所谓复制算法(Copying),即将内存平均分成A区、B区两块,进行复制+清除垃圾的操作,算法图解如下:
算法过程:
新生对象被分配到A块中未使用的内存当中。当A块的内存用完了, 把A块的存活对象复制到B块。
清理A块所有对象。
新生对象被分配到B块中未使用的内存当中。当B块的内存用完了, 把B块的存活对象复制到A块。
清理B块所有对象。
循环1。
这种算法简单高效,但是内存代价极高,有效内存只为总内存的一半,会浪费掉50%的空间。所以这种算法只是纸面算法,不具备可用性,一般来说都会使用优化的复制算法。
2、什么是优化的复制算法
所谓优化的复制算法,即在复制算法的基础上,使用三个分区(Eden/S0/S1)进行处理,算法图解如下:Eden/S0/S1默认空间比例Eden:S0:S1为8:1:1,有效内存(即可分配新生对象的内存)是总内存的90%。
算法过程:
Eden+S0可分配新生对象;
对Eden+S0进行垃圾收集,存活对象复制到S1。清理Eden+S0。一次新生代GC结束。
Eden+S1可分配新生对象;
对Eden+S1进行垃圾收集,存活对象复制到S0。清理Eden+S1。二次新生代GC结束。
循环1。
我们可以看出,如果Eden/S0/S1三个空间的比例为8:1:1,则可能会出现Eden+S0中存活对象超过了总空间的10%(S1、S0的空间都是总空间的10%),在这种情况下,新生代GC会将存活周期长的对象直接放入老生代,而无需达到我们设置的阈值(转入老生代的存活次数,-XX:MaxTenuringThreshold)。
当然,这种情况在正常情况下不会出现(除非特殊场景,或者程序设计问题)。IBM的专门研究表明,新生代中的对象98%是朝生夕死的,所以8:1:1的比例是十分合理的。(每次新生代中可用内存空间为整个新生代容量的90%(80%+10%),只有10%的内存是会被浪费的)。
相关文章推荐
- IT人士必去的10个网站
- 从此不求人:自主研发一套PHP前端开发框架(33)之插件化架构实现下
- Java千百问_07JVM架构(008)_java垃圾回收机制是什么
- 从此不求人:自主研发一套PHP前端开发框架(33)之插件化架构实现中
- 什么是架构
- 什么是架构
- 给外网访问本地网站
- 自助建站工具 搭建出来的网站真的适合SEO吗?
- Android群英传读书笔记第三章(Android控件架构与自定义View)
- [转]Kyoto Cabinet和LevelDB的架构比较分析
- 常用网站
- 小型电子商务网站数据管理系统
- android MVP——mvp架构的应用和优化
- git学习参考网站
- 数据采集测试资料网站
- 网站性能优化
- 游戏服务端架构学习笔记
- 大型网站架构系列:分布式消息队列
- 网站性能优化--Yahoo军规
- 网站收集