Java垃圾收集场景

Ked*_*ikh 3 java garbage-collection

我正在经历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();
    }
Run Code Online (Sandbox Code Playgroud)

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

这句话是什么意思?

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

JB *_*zet 9

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

thread stack --> ArrayList --> array --> x1, x2, x3, etc.
Run Code Online (Sandbox Code Playgroud)