减少内存使用WeakHashMap中
-
20-09-2019 - |
题
在 WeakHashMap.html 的的Javadoc一>,它说
“WeakHashMap中每个键是对象 间接存储为的指涉 弱引用。因此一个键会 只有后自动被删除 它的弱引用,内外 和地图之外,一直 由垃圾收集器清零“。
然后
请注意值对象可以指 间接地经由它的关键 WeakHashMap的本身;即,值 对象可以强烈地参考一些 其他主要对象,其相关 值对象,反过来,强烈指 于第一值对象的键。
但不应同时键和值,应使用在WeakHashMap中弱引用? 即,如果内存不足,GC将释放由该值对象保持的存储器(因为值对象最可能占用在大多数情况下比关键对象更多的内存)?
和如果GC释放值对象,密钥对象可以是免费以及?
基本上,我寻找一个HashMap这将降低存储器使用时,有低存储器(GC收集值,并且如果必要的密钥对象)。
是否有可能在Java中?
感谢您。
解决方案
弱引用是不恰当的高速缓存部分 - NetBeans这样做,可以去傻
。 SoftReference
是你想要的。它实际上是相当困难的得到它的权利 - 所以复制别人的解决方案。有些人劝显式管理缓存自己。
Reference
s仅与单个参考工作。有添加“ephemerons”到Java SE的建议,但我还没有看到一个实现与任何地方去。
其他提示
的想法是,可以使用该地图为“查找”数据结构,该结构仅保持键 - 值对活着其仍可以被引用到(通过键)。不过,尽管其基本思路是不错的,我记得那是不是有用,因为我希望这将是。
不隶属于 StackOverflow