比较古老的回收算法 。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数 。垃圾回收时,只用收集计数为0的对象 。此算法最致命的是无法处理循环引用的问题 。
- 标记-清除(Mark-Sweep)
此算法执行分两阶段 。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除 。此算法需要暂停整个应用,同时,会产生内存碎片 。
- 复制(Copying)
此 算法把内存空间划为两个相等的区域,每次只使用其中一个区域 。垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一个区域中 。次算法每次只处理 正在使用中的对象,因此复制成本比较小,同时复制过去以后还能进行相应的内存整理,不过出现“碎片”问题 。当然,此算法的缺点也是很明显的,就是需要两倍 内存空间 。
- 标记-整理(Mark-Compact)
此算法结 合了“标记-清除”和“复制”两个算法的优点 。也是分两阶段,第一阶段从根节点开始标记所有被引用对象,第二阶段遍历整个堆,把清除未标记对象并且把存活 对象“压缩”到堆的其中一块,按顺序排放 。此算法避免了“标记-清除”的碎片问题,同时也避免了“复制”算法的空间问题 。
- 增量收集(Incremental Collecting)
实施垃圾回收算法,即:在应用进行的同时进行垃圾回收 。不知道什么原因JDK5.0中的收集器没有使用这种算法的 。
- 分代(Generational Collecting)
基于对对象生命周期分析后得出的垃圾回收算法 。把对象分为年青代、年老代、持久代,对不同生命周期的对象使用不同的算法(上述方式中的一个)进行回收 。现在的垃圾回收器(从J2SE1.2开始)都是使用此算法的 。
分代垃圾回收详述

文章插图
如上图所示,为JAVA堆中的各代分布 。
年轻代分三个区 。一个Eden区,两个 Survivor区 。大部分对象在Eden区中生成 。当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当这个 Survivor区满时,此区的存活对象将被复制到另外一个Survivor区,当这个Survivor去也满了的时候,从第一个Survivor区复制 过来的并且此时还存活的对象,将被复制“年老区(Tenured)” 。需要注意,Survivor的两个区是对称的,没先后关系,所以同一个区中可能同时 存在从Eden复制过来 对象,和从前一个Survivor复制过来的对象,而复制到年老区的只有从第一个Survivor去过来的对象 。而且,Survivor区总有一个是空 的 。
- Tenured(年老代)
年老代存放从年轻代存活的对象 。一般来说年老代存放的都是生命期较长的对象 。
- Perm(持久代)
用 于存放静态文件,如今Java类、方法等 。持久代对垃圾回收没有显著影响,但是有些应用可能动态生成或者调用一些class,例如Hibernate等,在这种时候需要设置一个比较大的持久代空间来存放这些运行过程中新增的类 。持久代大小通过-XX:MaxPermSize=进行设置 。
GC类型
GC有两种类型:Scavenge GC和Full GC 。
- Scavenge GC
一般情况下,当新对象生成,并且在Eden申请空间失败时,就好触发Scavenge GC,堆Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor区 。然后整理Survivor的两个区 。
- Full GC
对整个堆进行整理,包括Young、Tenured和Perm 。Full GC比Scavenge GC要慢,因此应该尽可能减少Full GC 。有如下原因可能导致Full GC:
-
- Tenured被写满
- Perm域被写满
- System.gc()被显示调用
- 上一次GC之后Heap的各域分配策略动态变化
分代垃圾回收过程演示

文章插图

文章插图

文章插图

文章插图
推荐阅读
-
「洋葱」天然溶栓剂被找到了,隔三差五吃一吃,血栓悄悄没了
-
腾讯|腾讯新工作室亮相 打造类《GTA》开放世界3A大作
-
叶峰|军工板块走强,146只个股上涨,天海防务上涨19.96%
-
生肖▲七月起,月老降临,情缘到来,喜获真爱,从此甜蜜幸福的4大生肖
-
卢海潮|卢俊宇深夜发文祝福已故父亲卢海潮生日快乐,网友纠正他的说法
-
AG|AG遗憾淘汰,菲菲深夜发文:赛训永远第一,月光取代Dgc即将实现
-
胖次资讯|王一博代言产品又出事儿?保质期内包装完好却霉变,已咬一口赔偿不走心
-
青海生活资讯|可刚住进2个月就被房东撵,到底出了啥事?,男子将一年租金交完
-
经济日报|法国5000人毫无防护街头蹦迪?网友:疯了吗!
-
-
-
梨落推影视|有些比主角还好看,大家觉得谁被艳压,古装剧中的高颜值丫鬟
-
资本邦|三峡银行借IPO扶贫绿色通道上市补血?,走过2018业绩低潮
-
贾乃亮疑有新恋情!深夜带高挑美女回家,上月底还和李小璐合体
-
教师|只想安静教书,不想参赛评奖评职称,对还是错?高级教师告诉你!
-
恩怨|柯达高调制药!富士:兄弟等你很久了!丨一图回顾86年恩怨情仇
-
『钟南山』“钟南山题字”“武汉妈妈的饺子”…感谢信里看最真实的京东“战疫”故事
-
涛咪游戏|TES双杀DRX捍卫荣誉,Knight发条一大封神,Doran反向R致敬韦神
-
文艺圈 成名后生父欲相认遭拒:不想认识他,女星惨遭双亲弃养被同学孤立
-