我无法完全理解LruCache的内存管理组件。
从某种意义上说,我期待它在iOS平台上充当NSCache(最近刚从该操作系统中获取了一些知识)。
如果应用程序内存不足,LruCache是否会发布条目?
或者,如果我设置LruCache的最大条目/大小,那么它将占用空间并且在达到该条目/大小之前不会释放它?
我不想要正在构建的第三方库来取消用户的必要资源。
我该怎么做?
答案 0 :(得分:1)
这是来自2012 Google I / O的视频,其中解释了LRU-Caches(3:00)。他进一步讨论了操作系统在低内存中所做的事情:
http://www.youtube.com/watch?v=gbQb1PVjfqM
我不认为操作系统会驱逐低内存的缓存条目,因为它会从它(应用程序)可能需要的应用程序中窃取资源。操作系统可能不知道应用程序使用缓存中的哪些项目。它会杀死最近最少使用和/或内存消耗最高的后台应用程序。
顺便说一下:如果内存不足,可以通过实现onTrim()回调来主动帮助操作系统调整LRU的大小。您可以在YouTube视频中找到更多信息,并在此处:
http://developer.android.com/training/articles/memory.html#ReleaseMemoryAsTight
希望这有助于:)