gpt4 book ai didi

java - 未命名类的垃圾收集

转载 作者:行者123 更新时间:2023-11-30 02:59:03 25 4
gpt4 key购买 nike

Java GC 如何在这样的简单情况下工作:

ArrayList<Object> list = new ArrayList<>();

list.add(new Object());
list.add(new Object());
//do something with objects
list.remove(0);

最佳答案

首先:Object 类不是“未命名类”。如果有的话,人们会在 anonymous classes 的上下文中使用这个术语。 .

GC 保留所有存活的对象,即从 GC 根可到达的对象。所有其他对象都被丢弃。局部变量是(除其他外)GC 根。

您所描述的是没有直接指向您的对象的引用变量的情况,例如Object myObj = new Object();

但是,有一个列表包含对您的对象的引用。

现在,如果 GC 运行会发生什么?

  • list.remove(0); 之前,您的对象将被标记为 Activity 的,因为它是可通过列表间接访问。

  • list.remove(0); 之后(并假设“对对象执行某些操作”不涉及建立对您的对象的另一个引用)您的对象不会被 GC 标记为 Activity 的,因为它不可访问不再了。您的对象占用的内存随后将是标记为免费。

关于java - 未命名类的垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36420619/

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