有没有办法找到一个对象的所有引用(在Java中)?
我有一个对象的缓存,并希望定期扫描它,看看删除对象是否会导致它被销毁。
发布于 2009-12-21 23:15:39
您可能想看看Java提供的不同引用类型:strong, soft, weak, and phantom。
对于缓存,您通常会将引用包装到WeakReference或SoftReference中,一旦没有更多的强引用,就让对象被收集。
发布于 2009-12-21 22:59:42
我有一个对象缓存
考虑使用WeakHashMap
而不是HashMap
来获取它们。
以下是API的摘录:
一个基于哈希表的
Map
实现,具有弱密钥。当WeakHashMap
中的条目不再是通常使用的时,该条目将被自动删除。更准确地说,给定键的映射不会阻止该键被垃圾收集器丢弃,也就是说,使其成为可终结键、终结键,然后回收。当一个键被丢弃时,它的条目将有效地从映射中删除,因此这个类的行为与其他Map
实现略有不同。
发布于 2009-12-21 22:51:45
没有一种发布的方式可以公开这样的信息。让语言来做垃圾收集,JVM供应商的工作就是按照语言的指定来实现它。
https://stackoverflow.com/questions/1943122
复制