gpt4 book ai didi

java - 垃圾收集在内部 Map 中跟踪其自身实例的对象

转载 作者:行者123 更新时间:2023-12-02 06:01:34 24 4
gpt4 key购买 nike

在我的类的构造函数中,我将当前对象 (this) 及其键(在构造函数中作为参数输入的字符串)映射到静态 LinkedHashMap,以便我可以引用在我以后可能需要的任何地方通过字符串对象。

这是代码(如果有帮助的话):

public class DataEntry {
/** Internal global list of DataEntry objects. */
private static LinkedHashMap _INTERNAL_LIST;

/** The data entry's name. */
private String NAME;

/** The value this data entry represents. */
private Object VALUE;


/** Defines a DataEntry object with a name and a value. */
public DataEntry( String name, Object value )
{
if( _INTERNAL_LIST == null )
{
_INTERNAL_LIST = new LinkedHashMap();
}

_INTERNAL_LIST.put( name, this );

NAME = name;
VALUE = value;
}
}

问题?当我使用完此类的实例时,它们不会被垃圾回收。

我只是好奇是否有一种方法可以让此类的实例在我使用完它们后自行清理,而不必每次都手动调用Remove()方法或其他方法(以在内部删除其引用)我的意思是,当我不再使用 LinkedHashMap 时)。

最佳答案

将值设为 WeakReferences (或 SoftReferences )。这样这些值仍然可以被垃圾收集。当然,您在映射中仍然会有条目 - 但您可以定期清除映射中弱/软引用现在为空的任何条目。

关于java - 垃圾收集在内部 Map 中跟踪其自身实例的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/346762/

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