gpt4 book ai didi

java - 此 java 对象是否符合 List 中的垃圾回收条件

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:02 24 4
gpt4 key购买 nike

我问的可能是一个愚蠢的问题,所以请原谅我。所以它是这样的:

List<Boss> bossList = new ArrayList<Boss>();
Boss b = null;
for(Employee e : List<Employee> myList){
b = new Boss();
b.setEmployee(e);
bossList.add(b);
b = null;
}

所以在上面的场景中,我创建了很多 Boss 对象,然后取消引用它们(我知道我不需要写“b = null”,但我这样做是为了清楚我的问题)。在正常情况下,我会通过这样做将它们标记为垃圾收集,但因为在这种情况下,我将那些 Boss 对象添加到列表收集中,它们是否标记为 GC?如果不是那么为什么? List 集合如何在内部工作以保存每个添加的对象的引用,以避免垃圾收集?

[EDIT] 

问题的范围仅限于for循环中创建的各个Boss对象,考虑到该方法对外返回的是List的引用。

最佳答案

Boss 对象将不会被 GarbageCollector 收集,因为它们仍然在您发布的代码块中被引用。 bossList 是一个 ArrayList,它有一个 Object 的内部数组,因此保存对添加到它的那些对象的引用。

在这种情况下,不仅要考虑您的引用,还要考虑涉及的所有对象中的所有引用。

编辑:由于您在代码中返回列表,因此在您的程序不再引用该列表之前,对象不会被标记为垃圾回收。

关于java - 此 java 对象是否符合 List 中的垃圾回收条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16850413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com