社区
Java SE
帖子详情
gc 如何发现已经没有调用链的 非强引用对象
临江蓑笠翁
2020-12-15 10:49:32
gc 如何发现已经没有调用链的 非强引用对象
gc需要将非强引用对象加入pending队列,但是如果从GCRoots已经没有调用链的时候,如何发现这些对象?
...全文
4173
2
打赏
收藏
gc 如何发现已经没有调用链的 非强引用对象
gc 如何发现已经没有调用链的 非强引用对象 gc需要将非强引用对象加入pending队列,但是如果从GCRoots已经没有调用链的时候,如何发现这些对象?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
临江蓑笠翁
2020-12-17
打赏
举报
回复
遍历对象是都保留了,但是虚引用等已经不可达了,怎么处理没有标记的部分呀!是在哪部分操作的?
捏造的信仰
2020-12-16
打赏
举报
回复
遍历引用的目的不是将对象标记为“回收”,而是将对象标记为“保留”。然后再遍历所有堆内存,处理那些没有被标记的部分。
当
对象
存在引用时,是否可能在系统触发
GC
时会被回收?
Java中我们可以使用的四种引用方式
强引用
:此引用引用的
对象
,生命力最强。(
对象
不会被
GC
) 这里先定义一个构造,然后定义一个finalize方法,finalize方法会在
对象
被回收(
GC
)之前执行,可以对
对象
的回收进行监控, 也可以在
对象
回收之前进行一些资源释放操作。 在这里我们可以看到,c1就是
强引用
,引用了刚刚new的
对象
。
强引用
引用的
对象
在引用时不会被
GC
!!! 只有当c1=null时,此时c1
没有
了指向的
对象
,即c1的Container
对象
不可达,也就是JV...
GC
回收之引用(
强引用
、软引用、弱引用、虚引用)
(1)
强引用
是我们最常见,也是最熟悉的普通
对象
引用,如创建一个
对象
引用他(new
对象
)。只要处于此种引用,该
对象
就表示永远不会处于不可及状态,
GC
就不会回收他,即使JVM内存空间不足,JVM宁愿抛OutOfMemoryError运行时错误(OOM),让程序异常终止,也不会靠回收
强引用
对象
来解决内存不足的问题。
强引用
、软引用、弱引用、虚引用以及垃圾回收机制
一、回收
对象
判定算法 1、引用计数器算法 在堆中的每一个
对象
都有一个引用计数器,在任意位置引用了该
对象
,则该
对象
的引用计数器加一。这种垃圾回收机制比较传统,其缺点是无法判断两个
对象
循环依赖的情况,即A
调用
B,且B又
调用
了A。因此大多数主流的JVM都不会使用这种方法。 2、可达性分析算法 可达性分析算法是将所有的
对象
转化为一个
链
式结构,若A
调用
了B,则A指向B。该
链
式结构的根节点为
GC
Roots,即从
GC
Roots作为起点向下索引。若
发现
一个对现象不在以
GC
Roots为根节点的
调用
链
中,则该
对象
被JVM判定为
java
GC
根可达性分析和
对象
引用
后面几篇文章会围绕JVM相关知识进行学习与分享,本文主要阐述如何判断
对象
是否是垃圾
对象
以及判断垃圾
对象
的依据来展开分析。 1.判断
对象
可以回收的依据? 垃圾回收无
非
就是要对
已经
不再存活的
对象
视为垃圾进行回收,那么判断是否是垃圾
对象
主要有两种方式,分别为引用计数法和可达性分析法。 引用计数法: 顾名思义,
对象
有一个计数器,每当有新的引用则计数器加1,有引用失效则计数器减1,当该
对象
计数器值为0则说明
对象
不再被引用。 (1)优点:实现简单,判断高效。 (2)缺点:
对象
之间循环引用问题
Java
GC
及四种引用
文章目录
GC
判断
对象
可以被回收
GC
算法回收方法区四种引用
GC
GC
是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的
GC
功能可以自动监测
对象
是否超过作用域从而达到自动回收内存的目的,Java语言
没有
提供释放已分配内存的显示操作方法。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以
调用
下面的方法之一:System.
gc
() 或Runtime.getRuntime().
gc
() ,但JVM可以屏蔽掉显
Java SE
62,628
社区成员
307,259
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章