java吧 关注:1,288,563贴子:12,814,626
  • 14回复贴,共1

说对了来我公司

只看楼主收藏回复

强引用在java中最常见,可以说成员变量也是强引用,但成员变量并不在GC Root的引用链上,那么成员变量会被垃圾回收吗?


IP属地:湖北来自Android客户端1楼2021-08-21 21:16回复
    答案不是对就是不对,一半的概率,可见贵公司门槛很低


    IP属地:上海来自Android客户端2楼2021-08-21 21:35
    收起回复
      2025-11-23 20:24:42
      广告
      不感兴趣
      开通SVIP免广告
      不在引用链上不就是就会进入回收队列


      IP属地:江苏来自Android客户端3楼2021-08-21 21:43
      收起回复
        成员变量为什么不在引用链上呢


        IP属地:四川来自Android客户端4楼2021-08-21 23:41
        收起回复
          1.首先你要明白垃圾回收回收的是堆内存空间,不是你的变量。当一块内存空间没有任何引用指向它就可以被回收。
          2.什么是gcroot根,要回收垃圾就要先找到垃圾对象。要找到垃圾对象不容易,所以gcroot根是把所有可用对象串在一条引用链上,这里的对象有一个特征就是它们只会引用其他对象而不会被引用。不在这条引用链上的对象就可以被回收。它回收的就是不在引用链上的对象


          IP属地:安徽来自Android客户端5楼2021-08-22 08:25
          收起回复
            小白问问,成员变量不算被对象引用🐎,前提应该是对象被标记吧


            IP属地:广东来自iPhone客户端6楼2021-08-23 13:02
            回复
              兄弟,你真懂jvm吗?


              IP属地:上海来自Android客户端7楼2021-08-23 14:19
              回复
                是生存还是死亡,一个对象至少要经历2次标记过程。gcroots(可达性分析算法的实现)仅仅作为第一次标记而已。还要考虑该对象的finalize()方法。


                IP属地:江苏来自Android客户端8楼2021-08-23 14:44
                回复
                  2025-11-23 20:18:42
                  广告
                  不感兴趣
                  开通SVIP免广告
                  深入理解jvm虚拟机,class都会回收的


                  IP属地:澳大利亚来自Android客户端10楼2021-08-24 02:46
                  回复