【发布时间】:2012-03-13 01:05:26
【问题描述】:
我正在考虑在 Android 应用中实现第一层缓存。 我正在考虑使用 SoftReferences 来确保避免 OOM 异常,但由于有很多关于 Android 如何“过早”释放这些异常的文章,我决定研究 android.util.LruCache 缓存。
问题:如何根据实际设备正确调整尺寸? LRU 缓存是真正的解决方案而不是软引用,这听起来非常好,但如果你真的很想避免 OOM 异常,那么使用任意数量的兆字节硬引用会感觉非常不安全。如果你问我,那是不安全的。 无论如何,这似乎是唯一的选择。 我正在研究 getMemoryClass 以找出实际设备上应用程序的堆大小(+在调整缓存大小之前检查可用堆大小)。基线是 16 Megs,这听起来不错,但我见过设备(例如过去的 G1)抛出 OOM 异常,堆大小约为 5 MB(根据 Eclipse MAT)。我知道 G1 已经很老了,但关键是我的经验与文档中提到的 16 Megs 基线并不相符。因此,如果我需要我能合理获得的最多,我完全不确定应该如何扩展 LRU 缓存。 (对 8 Meg 会很满意,在低规格设备上会使用小至 1 Meg)
感谢任何提示。
编辑:我指的Android LRU缓存类:http://developer.android.com/reference/android/util/LruCache.html
【问题讨论】:
标签: android caching heap-memory lru