WeakHashMap随机清除

时间:2013-04-29 23:59:13

标签: java garbage-collection weakhashmap

我正在运行游戏,当我启动时,我将图像加载到WeakHashMap图像中。当我运行游戏时,我的RAM一直在上升,然后我的WeakHashMap最终卸载了所有数据。这与垃圾收集有关吗?任何解决方案?

3 个答案:

答案 0 :(得分:1)

您可以使用SoftReferences而不是WeakReferences创建HashMap - 垃圾收集器对GC的关注度稍差。只需复制WeakHashMap源代码,用SoftReferences替换WeakReferences。

答案 1 :(得分:0)

正如Louis Wasserman所说,这是预期的行为。我想你可能想要一个普通的hashmap。请在http://docs.oracle.com/javase/6/docs/api/java/util/WeakHashMap.html

阅读有关WeakHashMap的文档

答案 2 :(得分:0)

java.util.WeakHashMap是一种地图类型,正如其描述所暗示的那样,仅保留对其键的弱引用。如您所知,弱引用是不会阻止垃圾收集器收集引用对象的引用。为了防止对象被垃圾收集,您必须在某处保持对该对象的强引用。

如果您希望保护数据不受垃圾回收的影响,请将其存储在常规HashMap中。对于您的特定应用程序,您可能希望编写自己的地图实现,以保留软引用(gc仅在必须时清除的参考,而不是总是清除)到图像,并且当该艺术是时,它会自动加载缺少的艺术呼吁。 (如果你需要它是所有线程安全的,可能会很棘手,但是......)