在我的类的构造函数中,我映射当前对象(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 中删除其引用时)我的意思是,我不再使用它们了)。
制定价值观弱引用 http://java.sun.com/javase/6/docs/api/java/lang/ref/WeakReference.html (or 软引用 http://java.sun.com/javase/6/docs/api/java/lang/ref/SoftReference.html) 反而。这样这些值仍然可以被垃圾收集。当然,您在映射中仍然会有条目 - 但您可以定期清除映射中弱/软引用现在为空的任何条目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)