【问题标题】:OutOfMemoryError: Failed to allocate a 82956 byte allocation with 30836 free bytes and 30KB until OOM?OutOfMemoryError:无法分配 82956 字节分配,其中 30836 个空闲字节和 30KB 直到 OOM?
【发布时间】:2016-06-16 10:09:05
【问题描述】:

在我的应用程序中,我有一个存储图像的数据库,但是当我尝试在 BitMap 中检索图像时,logcat 显示 OutOfMemoryError。当我从数据库中仅检索一个图像时(当我不使用 do while循环我的代码运行良好)。请帮助我是android的新手。

这个类尝试从数据库中检索图像:

class Abc {

    ArrayList < ForBitMap > pic;

    Abc() {

        pic = new Abc < > ();

        DataBaseClass objOfDataBaseClass = new DataBaseClass(context);
        mCursor = objOfDataBaseClass.showData();

        if (mCursor.moveToNext()) {

            do {

                byte[] mg = null;

                mg = mCursor.getBlob(mCursor.getColumnIndex("image"));
                Bitmap bitmap = BitmapFactory.decodeByteArray(mg, 0, mg.length);

                pic.add(new ForBitMap(bitmap));

            } while (mCursor.moveToFirst());

        }
    } 

该类用于将值存储在 ArrayList(ArrayList pic;)中

class ForBitMap{
    Bitmap btmp;

    ForBitMap(Bitmap btmp){
        this.btmp=btmp;
    }

}

登录状态为:

java.lang.OutOfMemoryError: Failed to allocate a 82956 byte allocation with 30836 free bytes and 30KB until OOM

【问题讨论】:

  • 尝试使用 largeHeap 。 developer.android.com/reference/android/…
  • @SagarNayak 当我使用 largeheep=true logcat 时显示相同的错误
  • 你遇到了什么错误?
  • @SagarNayak 同样的错误 OutOfMemoryError 但之前显示 30kb 直到 oom 现在显示 64kb 直到 oom
  • @SagarNayak 在 largeheep=true 之后:OutOfMemoryError:无法分配 82956 字节分配,其中 66236 个空闲字节和 64KB 直到 OOM。在 largeheep=true 之前:无法分配 82956 字节分配,其中 30836 空闲字节和 30KB 直到 OOM?

标签: java android sql sqlite


【解决方案1】:

您可能不应该将位图存储在数据库中。只需将它们存储在文件存储中,并将文件路径保存在数据库中。

【讨论】:

  • 你能给我一个关于这个主题的正确链接吗
  • 当然,这是一个例子afterthoughtsoftware.com/posts/…
  • 而且您在检索和使用位图时也应该使用 Wea​​kReferences。它将防止内存泄漏(通常由位图引起)
【解决方案2】:

尝试使用 LruCache 保存图像,位图会在每次加载任何位图时分配内存,即使之前已加载。使用 LruCache,它会将您的图像与缓存内存中的键一起保存。

参考此链接: https://developer.android.com/reference/android/util/LruCache.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-21
    • 2017-12-07
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多