S0 = from
S1 = to
from区和to区,他们的位置和名分,不是固定的,每次GC后会交换
GC之后又交换,谁空谁to
Java堆从GC的角度还可以细分为:新生代(Eden区、From Survivor区和To Survivor区)和老年代

MinorGC的过程:(复制→清空→交换)

1:Eden、SurvivorFrom复制到SurvivorTo,年龄+1
首先,当Eden区满的时候会触发第一次GC,把还活着的对象拷贝到SurvivorFrom区,当Eden区再次出发GC的时候会扫描Eden区和From区域,对这两个区域进行垃圾回收,经过这次回收后还存活的对象,则直接复制到To区域(如果有对象的年龄达到了老年的标准,则复制到老年代区),同时把这些对象的年龄+1。

2:清空Eden、SurvivorFrom
然后,清空Eden和SurvivorFrom中的对象,也即复制之后又交换,谁空谁是to。

3:SurvivorTo和SurvivorFrom互换
最后,SurvivorTo和SurvivorFrom交换,原SurvivorTo成为了下一次GC时的SurvivorFrom区。部分对象会在From和To区域中复制来复制去,如此交换15次(由JVM参数MaxTenuringThreshold决定,这个参数默认是:15),最终如果还是存活,就存入老年代。

JVM对象生命周期与GC相关推荐

  1. java对象生命周期_Java对象生命周期和类生命周期

    原标题:Java对象生命周期和类生命周期 作者:彭空空 链接:https://www.jianshu.com/p/25ea857ba78b 导读 对象的生命周期 类的加载机制 类的生命周期 类加载器 ...

  2. Java中的垃圾回收与对象生命周期

    转载自   Java中的垃圾回收与对象生命周期 1. 垃圾回收 垃圾回收是Java程序设计中内存管理的核心概念,JVM的内存管理机制被称为垃圾回收机制. 一个对象创建后被放置在JVM的堆内存中,当永远 ...

  3. Java 对象生命周期和类生命周期

    Java 对象生命周期 在JVM运行空间中,对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation).应用阶段(Using).不可视阶段(Invisible).不可到达阶段(Unreach ...

  4. SSH学习-Hibernate对象生命周期管理

    Hibernate对象就是java中的实体对象,管理就是在实体对象的生命周期内被Hibernate的操作,Hibernate对象的生命周期其实就是实体对象的生命周期(从创建到最后被GC回收),期间对实 ...

  5. 编程思考:对象生命周期的问题

    前情提要 只要写过 c/c++ 的项目的童鞋应该对对象生命周期的问题记忆犹新.怕有人还不理解这个问题,笔者先介绍下什么是生命周期的问题? 一个 struct 结构体生命周期分为三个步骤: 出生:mal ...

  6. 【转】【iOS知识学习】_视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途...

    原文网址:http://blog.csdn.net/weasleyqi/article/details/8090373 iOS视图控制对象生命周期-init.viewDidLoad.viewWillA ...

  7. 容器,对象生命周期管理的基石

    2019独角兽企业重金招聘Python工程师标准>>> 郑重申明:包括本文在内的很多技术文章,大多出自山外高人,而非Fans. Fans暂时没有能力写作优秀的技术文章,Fans只是转 ...

  8. 《Imperfect C++中文版》——2.1 对象生命周期

    本节书摘来自异步社区出版社<Imperfect C++中文版>一书中的第2章,第2.1节,作者: [美]Matthew Wilson,更多章节内容可以访问云栖社区"异步社区&qu ...

  9. iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、v...

    2019独角兽企业重金招聘Python工程师标准>>> iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.vie ...

最新文章

  1. R语言使用plot函数和lines函数可视化线图(line plot)时、图之间的主要区别是由选项type产生的、type参数常用参数说明、不同type生成的可视化图像对比
  2. windows电脑制作mac os u盘重装系统_图文演示u盘重装系统步骤
  3. 2020年信息系统项目管理师真题讲解:基础知识1/3
  4. No module named '__main__.demo1'; '__main__' is not a package
  5. 【课题总结】OpenCV 抠图项目实战(12)源程序代码
  6. (王道408考研操作系统)第三章内存管理-第一节6-2:非连续分配管理方式之基本分页存储管理之基本地址变换机构
  7. C#开发笔记之20-如何用C#深克隆一个对象(优雅方案)?
  8. WAV格式中常见的压缩编码
  9. CentOS6.5恢复误删除的文件
  10. 现代 JavaScript 教程
  11. 无法删除文件:无法读源文件或磁盘
  12. 大小限制_微信传文件有大小限制?PPT太大怎么传?PPT自带三大压缩功能
  13. matepadpro升级鸿蒙,鸿蒙OS下月推出!MatePad Pro升级EMUI 11,提前预演
  14. 贷款逾期,征信记录五年之内可以消除?
  15. 如何正确使用 Mac 电脑的“恢复模式”?
  16. Elasticsearch设置账号密码
  17. 新点互联互通_新点驱动(江苏省互联互通版)
  18. 用App Designer 制作2048小游戏
  19. 2020年春运买票中对“候补购票”的理解和看法。
  20. MySQL 的 20+ 条最佳实践

热门文章

  1. excel : 自定义条件格式设置
  2. java静态方法如何获取配置文件数据
  3. nmcli 命令配置网络
  4. 7月30日科技联播:2018年全国电子竞技公开赛敲定:总决赛奖金89万 ,阿里安全的机器TimePlayer人很“变态”?...
  5. 2022年Docker安装Apache Airflow2.2分布式任务调度框架
  6. 怎么清除手机应用缓存
  7. Springboot Feature翻译
  8. 微信理财试水,腾讯、淘宝再度开战
  9. mac设置windows键盘
  10. 微信公众号之创建自定义菜单