一次完整的gc过程

gc是通过垃圾收集器来实现的,现代垃圾收集器大部分都是基于分代收集理论设计的,也就是将对象划分为新生代,老年代。其中新生代分为Eden区和两块Survivor区,比例为8:1:1。
每次分配内存都只会使用Eden区和一块Survivor区,对象默认是放在Eden区,但是如果对象太大了,Eden区放不下,那么就会放入到老年代中,当发生gc时,就会把存活对象放到另一块Survivor上,如果这块survivor区不够,那么依赖老年代进行担保,假设这块为s0区,另一块是s1区。下一次Eden区满的时候,进行一次MinorGc,会将Eden区和S0区存活的对象放到s1中,如果s1,放不下就会放到老年代中。然后循环往复,始终保证s0和s1中又一个区域是空的,一个对象默认最多经历15次gc,一旦超过15次gc就会放入到老年代中。但是如果在Survivor空间中,相同年龄的对象超过Survivor空间的一半,并不会等到对象的年龄到达15才进入老年代,这些相同年龄的对象会直接进入到老年代中

对象晋升到老年代一共有四种情况
  1. 对象太大,Eden放不下
  2. 存放存活对象的Survivor区太小,不足以存下存活对象
  3. 经历超过默认15次gc或者设定的
  4. Survivor空间中相同年龄的所有对象总和大于等于Survivor空间的一半,那么这些对象就会直接进入到老年代中

JVM 中一次完整的 GC 流程是什么样子的,对象如何晋升到老年代,相关推荐

  1. JVM的内存结构,Eden和Survivor比例;JVM中一次完整的GC流程,对象如何晋升到老年代,说说你知道的几种主要的JVM参数;CMS 常见参数解析;.你知道哪几种垃圾收集器,各自的优缺点

    47.JVM的内存结构,Eden和Survivor比例 49.JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代,说说你知道的几种主要的JVM参数 50.-XX:+CMSScavengeBefo ...

  2. jvm对象从新生代到老年代_深入理解jvm内存模型以及gc原理

    整体架构 Jvm = 类加载器 + 执行引擎 + 运行时数据区域 类加载器 ● 作用 类加载器是将编译好的class文件加载到内存中,并进行验证.初始化等步骤,形成能被jvm直接使用的类型. ● 加载 ...

  3. jvm对象从新生代到老年代_JVM内存管理、JVM垃圾回收机制、新生代、老年代以及永久代...

    内存模型 JVM运行时数据区由程序计数器.堆.虚拟机栈.本地方法栈.方法区部分组成,结构图如下所示. JVM内存结构由程序计数器.堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 1)程序计数器 ...

  4. JVM 晋升到老年代的动态年龄判断

    先说结论,方便复习: 新的动态年龄判断算法:Survivor区的对象年龄从小到大进行累加,当累加到 X 年龄时的总和大于50%(可以使用-XX:TargetSurvivorRatio=? 来设置保留多 ...

  5. 深入理解JVM—满足什么条件的对象才会进入老年代?

    我们可能知道jvm调优,但是jvm调优到底是为了调整什么呢?或者说是优化什么?可能并不是特别清楚. 其实很简单,就是为了减少STW(stop the world),什么会造成这一现象呢,学过gc的应该 ...

  6. Major GC 是清理老年代。 Full GC 是清理整个堆空间—包括年轻代和老年代。

    Major GC 是清理老年代. Full GC 是清理整个堆空间-包括年轻代和老年代.

  7. jvm性能调优实战 - 25模拟在Young GC过后因为放入下Survivor区域直接进入老年代

    文章目录 Pre Code GC日志 GC日志分析 小结 思考 Pre 上篇文章给大家分析了一下对象是如何通过动态年龄判定规则进入老年代的,同时让大家自己动手去模拟写代码体验一下对象达到15岁之后自动 ...

  8. jvm对象从新生代到老年代_一文搞懂JVM新生代、老年代和永久代

    Java堆是垃圾收集器管理的主要区域,因此很多时候也被称为"GC堆". 从内存回收角度看,由于现在收集器基本都采用分代收集算法,所以Java堆中还可以细分为:新生代和老年代.再细致 ...

  9. jvm配置参数,查看大对象直接分配到老年代

    看下如下代码: 配置参数 -Xms60m -Xms60m -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+PrintGCDetails 运行后看下如下,可以看到ParO ...

最新文章

  1. 1025 反转链表 (25 分)(c语言)
  2. 单利 java_Java设计模式-单利模式
  3. 一个ASP.NE导出Excel类
  4. git基本概念与核心命令_Git:了解核心版本控制概念的初学者指南
  5. 【Computer Organization笔记14】指令流水中的控制冲突和异常
  6. python和c先学哪个-python和c先学哪个
  7. 韩国韩亚航空数万份乘客身份信息被泄露
  8. python爬知识星球付费数据_python抓取知识星球精选帖,制作为pdf文件
  9. 8.ps输出属性-----状态
  10. 【LDAP】LDAP常用命令解析
  11. 利尔达蓝牙模组LSD4BT-E66ALSP001使用透传与手机APP(LightBlue)通讯测试
  12. python处理pcap文件_使用PYTHON解析Wireshark的PCAP文件
  13. 微信公众号接入百度机器人
  14. 云杰恒指:6.20恒指期货早盘资讯
  15. 这个案例你可以直接拿去用。
  16. C语言-输出几个数的最大数
  17. python重启路由器_Python实现路由器的重启和查看实时流量
  18. linux mount u盘 exfat,CentOS 挂载 exfat 和 FAT32格式的U盘
  19. 经典java程序源代码_【转】经典Java程序源代码(一)
  20. 金属学复习【1】金属的晶体结构

热门文章

  1. Glide最详细走读!看不懂我自杀!
  2. sklearn OneHot编码
  3. 大流量卡介绍:网上的大流量卡都是怎么来的?
  4. 商品价格监控接口,超详细的介绍
  5. Redis是什么?Redis有哪些数据类型?Redis怎么集群?
  6. 大数据应用统一集成平台CDAP简介
  7. 乐学python慕课答案_乐学英语演讲教程
  8. 50个直击灵魂的问题_质量管理50个常见问题详解
  9. 【毕业设计】深度学习+python+opencv实现动物识别 - 图像识别
  10. html中计时器,计时器.html