android - 如何查看android的LruCache中的可用内存?

标签 android caching memory xamarin.android out-of-memory

我想使用内存缓存 (LruCache) 而不是 DiskLruCache 来缓存图像。我对 android 中的图像缓存有一些疑问。

如何查看 Lrucache 中的可用内存大小?

当缓存请求越过 Lrucache 中的可用内存时会发生什么?

LruCache 对象是否保留在 dalvik 堆内存中?还是将完成的缓存保存在堆内存中?

最佳答案

第一个问题的答案:

    private LruCache<String, Bitmap> mMemoryCache;
    //...
    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    int availMemInBytes = am.getMemoryClass() * 1024 * 1024;

第二个答案:

最近最少使用的对象将从列表中删除。一个或多个对象将被删除,直到有足够的空间放置新对象。

关于第三个问题,我想我迟到了,因为 Dalvik 不再用于 Android > 4.4.2。也许这个视频可以帮助弄清楚新 ART 会发生什么 https://www.youtube.com/watch?list=PLOU2XLYxmsIJDPXCTt5TLDu67271PruEk&t=47&v=R5ON3iwx78M

希望对您有所帮助。

关于android - 如何查看android的LruCache中的可用内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26924810/

相关文章:

php - 每 60 分钟解码并缓存 json

java - 在 Hadoop 分布式缓存中创建和放置文件

c - 如何在 C99 中指定函数/变量的内存位置(快/慢)?

Python - 在内存中生成 csv 文件,然后将其数据编码为 base64?

java - 带有RelativeLayout的ScrollView

java - 有没有办法让 2 个不同的 RecyclerView 相互通信?

android - 停用 Android 应用程序的 Toast

android - 从 Android Management API 中取消注册

java - Hibernate 一级和二级缓存如何与多个 session 一起工作

c++ - 虚函数是否不太可能导致堆栈溢出?