java gc 可达性_JAVA--GC 垃圾回收机制----可达性分析算法

在JVM 中,java 为我们提供可有效的垃圾回收机制,GC ,GC的创建无疑是为了缓解内存压力、保存有效数据、回收垃圾无效数据;

在此之前GC在我的理解中,一直只是个概念,内存中出现垃圾,GC来回收一下,处理下;但是对其内部如何定义一个对象是否是'垃圾'并不知晓!

昨天在工作的时候,为了理解native 关键字的使用的,顺便也看到了一些blog对它的认知见解,我也学习了一下,如下是我的总结,希望也能有所收获吧。

GC回收对象定义规则算法:

可达性分析算法:

先看图:【来源网友的blog ,做了下标注】

5634ed55fd943c60bec689130b58ecdc.png

大家可能会对这个GC root 感兴趣了:我的理解是就是一个GC自己规定的有效对象根节点集合!!至于这个集合里面有啥玩意,能力不够,目前不在纠结!

然后从图上可以看出,从这个GC根集合里的所有元素(途中的GC roots 算一个元素)开始,网上查找被引用(指针含义类似)记录,所有被引用的对象都是有效对象,说明它还是有用的,不用回收;然后看object5 出来的应用,说实话,这个应用已经没有必要了,全部都是’‘没用的’对象,等待被GC回收吧!

以上就是我对可达性分析算法的初步理解。

等等!!!!!!!!!!!求救麦待。。。。。。。

突然要记录一下:目前大多数的JVM 使用的是

分代回收算法:将堆内存分为新生代和老年代。对这两部分分别使用不同的回收算法。

老年代中存放大对象和长期存活的对象,且对象较多,一般使用标记-清除算法或者标记-整理算法。[可达性分析算法做基础]

新生代存活对象较少,一般使用复制算法。

有的朋友会想到那具体的GC机制,如何回收这些对象内存的呢?以上红底色的算法查询下吧!!!

标签:JAVA,对象,回收,算法,GC,垃圾,可达性

来源: https://www.cnblogs.com/Ankermaker/p/10435847.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值