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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |