首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WeakHashMap随机清除

WeakHashMap随机清除
EN

Stack Overflow用户
提问于 2013-04-30 07:59:13
回答 3查看 231关注 0票数 0

我正在运行一个游戏,当我启动时,我将图像加载到图像的WeakHashMap中。当我运行我的游戏时,我的内存一直在增加,然后最终我的WeakHashMap卸载了他们的所有数据。这是否与垃圾收集相关?有什么解决方案吗?

EN

回答 3

Stack Overflow用户

发布于 2013-04-30 08:19:19

您可以使用SoftReferences而不是WeakReferences来创建HashMap -垃圾收集器将不会那么急切地使用GCing它。只需复制WeakHashMap源代码,用SoftReferences替换WeakReferences即可。

票数 1
EN

Stack Overflow用户

发布于 2013-04-30 08:11:32

正如路易斯·沃瑟曼所说,这是意料之中的行为。我想你可能需要一个普通的hashmap。请在http://docs.oracle.com/javase/6/docs/api/java/util/WeakHashMap.html上阅读有关WeakHashMap的文档

票数 0
EN

Stack Overflow用户

发布于 2013-04-30 08:51:02

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

如果您希望保护数据不被垃圾回收,请将其存储在常规HashMap中。对于您的特定应用程序,您可能希望编写自己的map实现,以保留对图像的软引用( gc仅在必要时才清除的引用,而不是总是清除),并让它在调用缺少的图片时自动加载缺少的图片。(但是,如果您需要所有线程都是安全的,那么可能会很棘手……)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16290147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档