如何在创建多个对象的for循环中释放内存?

How to free memory inside a for loop of creating multiple object?

在下面的代码中 - 对象 s2 创建了 10000000 次并添加到列表中 - samp2 将在外部某处使用。它[创建的对象]会通过将其设为空来获得GC吗?

有人能解释一下吗?

如果它没有发生 GC,那么如何实现 GC,因为创建了这么多对象并将其添加到列表中并且进一步没有用?

请帮我解决这个问题?

/----------*/

List<SampleBean> samp2=new ArrayList<>();


for(int i=1;i<10000000;i++){

        SampleBean s2=new SampleBean();

        s2.x=i;

        samp2.add(s2);
        s2=null;
}

/SampleBean 类/

public class SampleBean{

  int x;

}

注意:samp2 是包含对象的列表,它将在外部使用。

仅当没有其他对象持有对它的任何引用时,对象才会被垃圾回收。

在那种情况下,由于您仍然持有对 samp2 的引用,它本身持有对每个元素的引用,因此它们不会被垃圾回收。

另外,那个

s2 = null;

是无关紧要的,因为 s2 变量范围只是那个块。所以一旦它到达块的末尾,变量就不复存在了。

如果您希望某个对象被垃圾回收,您只需确保您没有持有任何其他对它的引用。在这种情况下,您只需将其从 samp2 ArrayList 中删除即可。