JVM对象生命周期与GC
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相关推荐
- java对象生命周期_Java对象生命周期和类生命周期
原标题:Java对象生命周期和类生命周期 作者:彭空空 链接:https://www.jianshu.com/p/25ea857ba78b 导读 对象的生命周期 类的加载机制 类的生命周期 类加载器 ...
- Java中的垃圾回收与对象生命周期
转载自 Java中的垃圾回收与对象生命周期 1. 垃圾回收 垃圾回收是Java程序设计中内存管理的核心概念,JVM的内存管理机制被称为垃圾回收机制. 一个对象创建后被放置在JVM的堆内存中,当永远 ...
- Java 对象生命周期和类生命周期
Java 对象生命周期 在JVM运行空间中,对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation).应用阶段(Using).不可视阶段(Invisible).不可到达阶段(Unreach ...
- SSH学习-Hibernate对象生命周期管理
Hibernate对象就是java中的实体对象,管理就是在实体对象的生命周期内被Hibernate的操作,Hibernate对象的生命周期其实就是实体对象的生命周期(从创建到最后被GC回收),期间对实 ...
- 编程思考:对象生命周期的问题
前情提要 只要写过 c/c++ 的项目的童鞋应该对对象生命周期的问题记忆犹新.怕有人还不理解这个问题,笔者先介绍下什么是生命周期的问题? 一个 struct 结构体生命周期分为三个步骤: 出生:mal ...
- 【转】【iOS知识学习】_视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途...
原文网址:http://blog.csdn.net/weasleyqi/article/details/8090373 iOS视图控制对象生命周期-init.viewDidLoad.viewWillA ...
- 容器,对象生命周期管理的基石
2019独角兽企业重金招聘Python工程师标准>>> 郑重申明:包括本文在内的很多技术文章,大多出自山外高人,而非Fans. Fans暂时没有能力写作优秀的技术文章,Fans只是转 ...
- 《Imperfect C++中文版》——2.1 对象生命周期
本节书摘来自异步社区出版社<Imperfect C++中文版>一书中的第2章,第2.1节,作者: [美]Matthew Wilson,更多章节内容可以访问云栖社区"异步社区&qu ...
- iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、v...
2019独角兽企业重金招聘Python工程师标准>>> iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.vie ...
最新文章
- R语言使用plot函数和lines函数可视化线图(line plot)时、图之间的主要区别是由选项type产生的、type参数常用参数说明、不同type生成的可视化图像对比
- windows电脑制作mac os u盘重装系统_图文演示u盘重装系统步骤
- 2020年信息系统项目管理师真题讲解:基础知识1/3
- No module named '__main__.demo1'; '__main__' is not a package
- 【课题总结】OpenCV 抠图项目实战(12)源程序代码
- (王道408考研操作系统)第三章内存管理-第一节6-2:非连续分配管理方式之基本分页存储管理之基本地址变换机构
- C#开发笔记之20-如何用C#深克隆一个对象(优雅方案)?
- WAV格式中常见的压缩编码
- CentOS6.5恢复误删除的文件
- 现代 JavaScript 教程
- 无法删除文件:无法读源文件或磁盘
- 大小限制_微信传文件有大小限制?PPT太大怎么传?PPT自带三大压缩功能
- matepadpro升级鸿蒙,鸿蒙OS下月推出!MatePad Pro升级EMUI 11,提前预演
- 贷款逾期,征信记录五年之内可以消除?
- 如何正确使用 Mac 电脑的“恢复模式”?
- Elasticsearch设置账号密码
- 新点互联互通_新点驱动(江苏省互联互通版)
- 用App Designer 制作2048小游戏
- 2020年春运买票中对“候补购票”的理解和看法。
- MySQL 的 20+ 条最佳实践