Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Finalize()方法是否忽略映射/列表中的对象?_Java - Fatal编程技术网

Java Finalize()方法是否忽略映射/列表中的对象?

Java Finalize()方法是否忽略映射/列表中的对象?,java,Java,尽管对象存在于列表或映射中,但是否可以调用对象的finalize()方法。如果没有,那么如何检测对象除了在列表/映射中存在外,其他任何东西都无法访问该对象 这背后的原因是我有一个map,它有一个键UUID,它是对象的唯一ID,作为map的值。我需要知道地图上的“值”对象何时不再可访问,以便我可以清理空间,因为将有很多对象,但我还需要在地图中放置它们,直到它们不再可在其他任何地方访问,以便我可以在需要时通过它们的UUID检索它们 非常感谢您的帮助,谢谢 首先,如果你有 Map<K,V>

尽管
对象
存在于
列表
映射
中,但是否可以调用
对象
finalize()
方法。如果没有,那么如何检测
对象
除了在
列表
/
映射
中存在外,其他任何东西都无法访问该对象

这背后的原因是我有一个map,它有一个键
UUID
,它是
对象的唯一ID,作为
map
的值。我需要知道地图上的“值”对象何时不再可访问,以便我可以清理空间,因为将有很多对象,但我还需要在地图中放置它们,直到它们不再可在其他任何地方访问,以便我可以在需要时通过它们的
UUID
检索它们


非常感谢您的帮助,谢谢

首先,如果你有

Map<K,V> map = new HashMap<>();
map.put(key,value);
但是,请注意,如果您的值对象仍然从另一个引用引用,它将不会被垃圾收集。所以希望这能有所帮助


如果您的目的是实现一个缓存,以确保您不会使用太多的信息,那么您可能需要查看Guava的缓存。如果您想要或/和对象的过期时间,它具有内存限制

这正是我要找的东西。非常感谢。
Map<K,WeakReference<V>> map = ...
map.put(key, new WeakReference<V>(v));
if (map.get(key).get()==null){
   //object was garbage collected
}