关于活跃线程所引用的对象

来源:7-1 垃圾回收之标记算法

YogurtJ

2019-12-26

老师您好,有两个问题想要请教

  1. 类的成员变量所引用的对象为什么没有作为GC ROOT呢
  2. 看了您之前对同学提问的回答 :

“而活跃线程引用的对象则有可能是方法中new出的对象,也有可能是外部new出来的对象,然后被线程的方法所引用到”

可否对 "外部new出来的对象,然后被线程的方法所引用到” 这句话用具体的代码讲解一下呢,感谢!

写回答

1回答

翔仔

2019-12-27

同学好,

  1. 可以反推一下,GC本身就是为了回收没用的对象实例的,成员变量所引用的对象如果作为GC Root,那么当前对象便会一直存在没法进行回收了,所以要成为GC Root,那么该对象必须是要么是静态的,要么是方法执行完成后就会被确定清除的,也就是具备确定性

  2. 其实就是不在方法里面创建的对象,就好比是静态成员变量引用的对象,就当做是外部的对象

0
4
翔仔
回复
慕UI6331297
同学好,感谢提醒,第3种就是我要举的例子
2020-03-27
共4条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程