JVM 3. 为什么需要两个survivor区

0. 前置知识

  1. 简单复制算法 的原理
  2. HotSpot JVM复制算法的过程

1.如果只有一个survivor区

在进行一次GC后,形成的局面是。

那么我们下面往新生代放对象时,我们放入哪里?

假如放入Eden区

然后到了第二次垃圾回收,这个时候我们还要对Survivor里面的对象回收吗?

如果回收,那不是又产生碎片内存了吗?

假如放入Surivor区

这时确实避免了碎片内存,但这不是相当于浪费了80%的内存吗?

2.两个Survivor区

 我们就可以在第二次垃圾回收时,将Survivor 1 中的存活的对象放入 2 区中,防止内存碎片的产生。

所以我们需要两个survivor,并保证里面的其中一块在垃圾回收前为空,方便我们对另一块survivor进行垃圾回收。
当然顺带的,我们把eden区的存活对象也放入2区了。

JVM 3. 为什么需要两个survivor区相关推荐

  1. 深入理解JVM——(三)为什么JVM新生代需要两个Survivor区

    经过了JVM区域的学习,我们知道在堆中新生代具有一个Eden区和两个Survivor区,这里就有疑问了,为什么需要Survivor区和为什么需要两个Survivor区?带着疑问我们思考一下. 一.为什 ...

  2. JVM内存结构--新生代及新生代里的两个Survivor区(下一轮S0与S1交换角色,如此循环往复)、常见调优参数

    转自http://www.cnblogs.com/duanxz/p/6076662.html 一.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以, ...

  3. 为什么新生代内存需要有两个Survivor区

    在我的上一篇博客中,介绍了JVM堆内存的结构以及在堆中进行的GC机制,链接是浅谈JAVA GC机制与性能优化 那么,在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区? 1 ...

  4. java eden s0 s1_JVM内存结构--新生代及新生代里的两个Survivor区(下一轮S0与S1交换角色,如此循环往复)、常见调优参数...

    一.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  5. 年轻代为什么要设置两个Survivor区

    设置两个Survivor区最大的好处就是解决了碎片化. 为什么一个Survivor区不行?第一部分中,我们知道了必须设置Survivor区.假设现在只有一个survivor区,我们来模拟一下流程:  ...

  6. 新生代Eden与两个Survivor区的解释

    文章出处:http://ifeve.com/jvm-yong-generation/ 聊聊JVM的年轻代 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分 ...

  7. JVM 新生代为何需要两个 Survivor 空间?

    我们知道,目前主流的虚拟机实现都采用了分代收集的思想,把整个堆区划分为新生代和老年代:新生代又被划分成 Eden 空间. From Survivor 和 To Survivor 三块区域. 看书的时候 ...

  8. 新生代Eden区、两个Survivor区及老年代的关系

    偶然想起JVM年轻代中Eden区和两个Survivor的比例,就想根据自己的理解和大家探讨一下为什么要配成8 :1 :1的比例. 一.JVM堆分代 1.JVM堆被分为了年轻代和老年代.年轻代的GC过程 ...

  9. java 新生代中的Eden与两个Survivor区详解

    1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  10. 为什么需要两个Survivor区?

    最大的好处就是解决了碎片化.也就是说为什么一个Survivor区不行?第一部分中,我们知道了必须设置Survivor区.假设现在只有一个Survivor区,我们来模拟一下流程: 刚刚新建的对象在Ede ...

最新文章

  1. java getattribute intvalue_Java NodeTree.getAttributeI方法代码示例
  2. Crawler:基于splinter.browser库实现爬取12306网站来实现快速抢票
  3. 使用PerfView监测.NET程序性能(三):分组
  4. redis序列化_SpringBoot整合redis
  5. 重返数学史的黄金时代,由数学推动诞生的人工智能,一部人类智慧形成的历史...
  6. 已知前序中序求层序 c语言递归,二叉树的遍历:前序,中序,后序,层序--包括递归和非递归实现...
  7. php判断日期文章变红,DeDecms如何实现当天发表的文章日期以红色显示
  8. 查找占用内存最大进程所在路径命令
  9. jquery easyui validatebox remote使用
  10. 【理论篇】是时候彻底弄懂BERT模型了(建议收藏)
  11. 反三角函数在线计算机,arcsin计算器(反三角函数计算器在线)
  12. HTTP、HTTP2.0、SPDY、HTTPS 你应该知道的一些事
  13. 分享一款超强看图软件。极速看图。这些看图软件比系统自带的强大多了!
  14. 小学生如何用计算机写字,小学生练字笔顺电脑文章大全短文
  15. mc服务器图标修改,高版本配置文件修改(添加,修改交易)
  16. 【Golang】Slice数组组成和扩容机制
  17. GOP I帧和IDR帧
  18. 2018中国初创企业融资近千亿 人工智能领跑新经济破局
  19. 我的世界java百度什么电脑玩好_【我的世界】为了在龙芯电脑上玩Minecraft(我的世界)我做了什么_玩得好游戏攻略...
  20. 视频有黑边怎么办?如何裁剪视频画面的黑边?

热门文章

  1. MacBook故障处理
  2. 《NDC实施指南》连载之二——关于《NDC实施指南》
  3. canvas制作加载动画并打包发布(原生js和react框架)
  4. 我所知道的富士康之四:培训
  5. 想喝一点汤 - 如何看懂新闻联播
  6. YOLOv5超详细安装配置过程(含CUDA、cuDNN、anaconda、pytorch环境配置 - Windows / Ubuntu Linux)
  7. php hr管理系统下载,phpHRMS php人力资源管理系统 - 下载 - 搜珍网
  8. Java 虚拟机 - 下
  9. 【日语】かざぐるま(风车)
  10. 【 测试小面试题总结】