加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java垃圾收集场景

发布时间:2020-12-15 05:13:22 所属栏目:Java 来源:网络整理
导读:我正在经历 Java垃圾收集过程以及GC适用的不同场景. 以下是我感到困惑的情景: ListX listX = new ArrayListX(); for(int a = 0;a100;a++){ listX.add(new X(a)); } for (X xObject : listX) { xObject.printValue(); } 在第一个循环中,我在每个循环中添加新
我正在经历 Java垃圾收集过程以及GC适用的不同场景.

以下是我感到困惑的情景:

List<X> listX = new ArrayList<X>();

    for(int a = 0;a<100;a++){
        listX.add(new X(a));


    }

    for (X xObject : listX) {
        xObject.printValue();
    }

在第一个循环中,我在每个循环中添加新对象,在最新循环中,我只是打印值,那么,我在适用于GC的列表中添加的那些对象是什么?

这句话是什么意思?

“当一个实例有资格进行垃圾收集时,还有一个很好的例子.实例的所有属性都可以存储在寄存器中,然后访问寄存器来读取值.将来不会出现这些值.写回实例.虽然这些值可以在将来使用,但仍然可以将此实例标记为有资格进行垃圾回收“

解决方法

不,它们不是,因为它们被ArrayList引用的数组引用,其引用位于当前线程的堆栈中:

thread stack --> ArrayList --> array --> x1,x2,x3,etc.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读