Mar*_*jer 7 java garbage-collection weak-references
是否有可能在Java中创建一个弱引用,只有在指定的条件返回时才能将其对象发送到垃圾收集器true?
假设我有一些缓存可以将ID号映射到某些数据:
Map<Integer, SomeData> cache = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
SomeData有两个重要的方法 - void updateTime()只是将内部变量设置为当前时间,并boolean canBeDeleted()检查对象是否在过去10分钟内使用过(仅通过比较当前时间和保存时间加上10分钟).如果它在这段时间内没有被使用,则该方法返回true并且可以从缓存中移除对象...
但是,当我使用弱引用而不是强引用创建缓存时:
Map<Integer, WeakReference<SomeData>> cache = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
然后唯一的WeakReference检查可能是对对象的强引用,但我想如果它也检查我的条件canBeDeleted()并且如果它返回则没有删除引用false.有办法怎么做?
(最重要的是,有一个内存泄漏,我不知道如何解决它...当删除WeakReference中的对象时,地图仍然包含不必要的键/值对).
提前致谢.
您只需删除缓存中条件为真的键即可。
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |