文档章节

将对象从年轻代到老年代是如何判断该对象执行了多久?以及什么情况下发生转移?那些对象在老年代中?

B
 Bb进阶
发布于 08/11 10:46
字数 801
阅读 6
收藏 0

Minor GC发生在年轻代,频率较高速度较快

  Major GC 是清理永久代

  Full GC 是清理整个堆空间,包括年轻代和永久代

    一般新生成的对象都出现在Eden区,当Eden区被填满时,所有经过垃圾回收还存活的对象被复制到两个Survivor区域中的一个,我们假定是From区(两个区域实际上没有任何区别,From和To只是为了更好的说明工作流程),当From区域也被填满时,这个区域经过垃圾回收仍存活的对象将会被复制进入To区域,原From区域被清空,并且从Eden区过来的数据将直接进入To区域。当To区域也被填满时,之前从From区域过来的那部分数据如果仍在活动,将会被放到老年代。需要注意的是,两个Survivor区域总有一个会是空的。

通过年龄计数器。对象每经过了一个GC仍然存活,年龄计数器加一。当年龄超过了设定的值;则将其通过担保机制转移到老年代。或者动态判定,当survivor中年龄相同的多个对象的总和超过了survivor的一半,则将年龄大于等于该年龄的对象转移到老年代,无需等待设置的最大年龄值。年龄大的对象直接进入老年代。

在Minr GC 之前,首先会检查老年代的可使用空间是否大于年轻代的对象的总和,若大于则是一次安全的GC。若不大于且是否允许担保失败设置为TRUE,则计算历次晋升到老年的对象的平均大小是否大于老年代的最大可用空间,若大于则进行一次冒险的Minor GC,因为有可能老年代不能满足空间的需求,则进行一次Full GC; 若不大于且是否允许担保失败设置为FALSE,则进行一次Full GC,让老年代腾出更多的空间。之所以存在Min GC是因为年轻代每次只使用一个survivor保存仍然存活的对象。

同时,如果在一次安全的minor GC 的时候,仍然存活的对象不能在另一个survivor中全部容纳,会通过担保机制直接进入老年代。但是Full GC 与 Minor GC 相比,比较耗时。老年代的对象: 1.大对象(字符串与数组),即超过了设定的值的对象,直接在老年代中分配;  2.长期存活的对象进入老年代

© 著作权归作者所有

B
粉丝 1
博文 54
码字总数 31455
作品 0
太原
私信 提问
JVM从零开始(二) -垃圾回收机制以及内存分代模型

JVM中垃圾回收的判定标准 最终目的是将内存中无用的对象回收掉。具体的判定方法有: 引用计数法,不采用,指的是维护对象被引用的次数,次数为0则意味着是垃圾。 可达性算法-GC Roots traci...

陈年之后是青葱
09/03
63
0
Java垃圾收集的艺术

垃圾收集(Garbage Collection),简称GC,是Java语言一个成名特性,使它摆脱了C、C++那样手动管理内存的痛苦,提到垃圾收集,必然想到它是干什么的?简单来说,它是我们管理堆内存和方法区上...

2017/12/29
0
0
从年轻代到老年代执行的时间以及发生转移的场景

1.通过年龄计数器判断一个对象是否需要转移。对象每经过一个GC仍然存活,年龄计数器加一。当年龄超过设定的值,则将其通过担保机制转移到老年代。 2.或者动态绑定,当Suvivor中年龄相同的对象...

无精疯
2018/03/17
160
0
JVM Garbage First(G1) 垃圾收集器

同优秀的CMS垃圾回收器一样, G1也是关注最小时延的垃圾回收器, 也同样适合大尺寸堆内存的垃圾收集, 官方也推荐使用G1来代替选择CMS。 G1最大的特点是引入分区的思路, 弱化了分代的概念,...

Java搬砖工程师
02/28
46
0
4. GC 算法(实现篇) - GC参考手册

您应该已经阅读了前面的章节: 垃圾收集简介 - GC参考手册 Java中的垃圾收集 - GC参考手册 GC 算法(基础篇) - GC参考手册 学习了GC算法的相关概念之后, 我们将介绍在JVM中这些算法的具体实现。...

renfufei
2017/02/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

iptables删除命令中的相关问题

最近在做一个中间件的配置工作,在配置iptables的时候,当用户想删除EIP(即释放当前连接),发现使用iptables的相关命令会提示错误。iptables: Bad rule (does a matching rule exist in t...

xiangyunyan
51分钟前
4
0
IT兄弟连 HTML5教程 HTML5表单 新增的表单属性1

HTML5 Input表单为<form>和<input>标签添加了几个新属性,属性如表1。 1 autocomplete属性 autocomplete属性规定form或input域应该拥有自动完成功能,当用户在自动完成域中开始输入时,浏览器...

老码农的一亩三分地
今天
7
0
OSChina 周五乱弹 —— 葛优理论+1

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享米津玄師的单曲《LOSER》: mv中的舞蹈诡异却又美丽,如此随性怕是难再跳出第二次…… 《LOSER》-...

小小编辑
今天
1K
23
nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部