gpt4 book ai didi

从 map 中删除后 Java 垃圾收集实例?

转载 作者:行者123 更新时间:2023-12-02 04:32:58 34 4
gpt4 key购买 nike

我一直在努力变得越来越专注于内存,并且有关于垃圾收集的问题。

在这种情况下,Profile 将是我们程序中的一个类,但仅当用户实际登录时才需要配置文件。

Map<UUID, Profile> profiles;

public ProfileManager() {
profiles = new HashMap<UUID, Profile>();
}

public void login(UUID uuid) {
profiles.put(uuid, new Profile(uuid));
}

public void logout(UUID uuid) {
if(profiles.containsKey(uuid))
profiles.remove(uuid);
}

我的问题是,它会垃圾收集已删除的配置文件吗?它没有设置为 null,而是不再被引用。我不太确定这是如何处理的。我想,因为它不再被引用,所以它会被垃圾收集,但话又说回来,配置文件不为空。

谢谢。

最佳答案

当您从 map 中删除 Profile 对象时,如果没有其他对象引用它,该对象将有资格进行垃圾回收。之后,垃圾收集器可能会也可能不会立即对其进行垃圾收集,具体取决于对象被引用的时间。

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

但是,出于您的目的,我建议您只需将其从 map 中删除,确保它没有在其他任何地方引用,然后就不必担心垃圾收集器如何工作的更详细的细节。

关于从 map 中删除后 Java 垃圾收集实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213184/

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