【问题标题】:OutofMemory exception with DiskLruCache when app runtime memory exceeds its maxmemory当应用程序运行时内存超过其最大内存时,DiskLruCache 出现 OutofMemory 异常
【发布时间】:2013-12-03 00:23:00
【问题描述】:

我正在使用此链接中提供的 DiskLruCache http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html 用于处理内存不足问题,但是当发生缓存未命中时,它正在从文件描述符中解码,在解码时它正在增加堆大小并且它没有释放分配的内存 (Runtime.getRuntime().totalMemory()) 它继续增加运行时内存当它超过 Runtime.getRuntime().maxMemory() 时,它会引发内存不足的执行,如何处理这个任何建议将不胜感激

【问题讨论】:

  • 发布你的代码,你是如何使用磁盘 LRU 缓存的。
  • 我遵循链接developer.android.com/training/displaying-bitmaps/…中提供的相同代码
  • 然后给磁盘 LRU 缓存分配更少的内存或者按照这里提到的:shaikhhamadali.blogspot.com/2013/09/…
  • 实际上当发生 LruCache 未命中时,它会从 filedescriptor 解码位图并将其添加到 LruCache 并最近删除并将其添加到软引用 哈希集中并使用 inBitmap 概念来避免内存不足的执行,但是运行时内存不断增长,有时会超过并引发该问题
  • 那么你没有以正确的方式使用它,因为磁盘 lru 缓存只保留你给它的内存大小。

标签: android bitmap out-of-memory


【解决方案1】:

试试这个,如果你的 sdk 最低版本是 11 或更高,

将以下内容添加到清单中的应用程序标签中

android:largeHeap="true"

希望对你有帮助。

【讨论】:

  • tanx,但我已经这样做了,当它超过 maxmemory 时,就会引发这个问题
【解决方案2】:

使用它来加载大尺寸图像并避免内存不足异常 https://github.com/nostra13/Android-Universal-Image-Loader

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多