初识 GC 回收

GC [垃圾回收]

作用区域:堆、方法区【特殊堆】

堆里面一般分区:

  • 新生代/伊甸园区
  • 幸存区 (from、to)
  • 老年代
  • 元空间/永久区

GC回收的区域一般在:

  • 新生代/伊甸园区
  • 幸存区 (from、to)
  • 老年代

GC回收99%的情况在 新生区

年轻代的GC一般用复制算法 。
每次GC 都会将Eden活的对象移到幸存区中,并且Eden区被清空
幸存区 复制出来一个空的,将其中一个复制到另一个幸存区中。 谁空谁是to 

白话理解:  Eden存活对象复制到 幸存to区,同时 from区存活对象也复制到to区。保证有个一个幸存区永远是空的。也就是谁空谁是to 也就出现了 from 和 to 会互换。

默认当一个对象经历15次GC 会进入养老区。
-XX:MaxtenuingThreshold      当新手代对象通过指定的次数就能进入老年代,默认为15.

GC一般有两种: 轻GC (又称:普通GC),和重GC (又称:全局GC)

注:轻GC一般发生在 新生代和幸存区,重GC一般发生在老年代

GC算法的评判标准

GC算法的评判标准主要是以下4点:

  1. 吞吐量:即单位时间内的处理能力。
  2. 最大暂停时间:因执行GC而暂停执行程序所需的时间。
  3. 堆的使用效率:鱼与熊掌不可兼得,堆使用效率和吞吐量、最大暂停时间是不可能同时满足的。即可用的堆越大,GC运行越快;相反,想要利用有限的堆,GC花费的时间就越长。
  4. 访问的局部性:在存储器的层级构造中,我们知道越是高速存取的存储器容量会越小。由于程序的局部性原理,将经常用到的数据放在堆中较近的位置,可以提高程序的运行效率。

GC的算法:

  • 标记清除法
  • 标记压缩
  • 复制算法
  • 引用计数法

可达性

​ 所谓的可达性就是通过一系列称为“GC Roots”的对象为起点,从这些节点开始向下搜索,搜索走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时&

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值