Java OutOfMemory位图问题

Java OutOfMemory位图问题,java,android,performance,android-bitmap,kotlin-android-extensions,Java,Android,Performance,Android Bitmap,Kotlin Android Extensions,我正在做一份备忘录式的申请。当用户想要创建备忘录时,他/她可以向该备忘录添加多个图像。一切正常,但当我添加多个带有图像的备忘录时,我的应用程序会因java.lang.OutOfMemory异常而崩溃。我知道这与位图有关,因此这是一个示例代码: noteImage = BitmapFactory.decodeFile(originalExtImgPath) 然后我把这些位图保存在内存中 `AsyncTask.execute { for (index in images.indic

我正在做一份备忘录式的申请。当用户想要创建备忘录时,他/她可以向该备忘录添加多个图像。一切正常,但当我添加多个带有图像的备忘录时,我的应用程序会因java.lang.OutOfMemory异常而崩溃。我知道这与位图有关,因此这是一个示例代码:

noteImage = BitmapFactory.decodeFile(originalExtImgPath)
然后我把这些位图保存在内存中

`AsyncTask.execute {
        for (index in images.indices) {
            storage.createFile("Images", paths[index], images[index])
        }
    }`
我只添加了三个图像,这就是它使用的内存量


我如何管理它,使它使用更少的内存?谢谢大家!

基本上来说,问题是您试图将一个大图像加载到内存中。内存不足,无法存储所有图像,因此应用程序崩溃。 诀窍是减少位图的内存占用

Android开发者网站上有一篇关于这方面的文章:

基本上来说,问题是您试图将大图像加载到内存中。内存不足,无法存储所有图像,因此应用程序崩溃。 诀窍是减少位图的内存占用

Android开发者网站上有一篇关于这方面的文章:

进行堆转储,找出您在哪里使用内存(很可能是内存泄漏)。内存问题从来不是关于实现一个技巧,而是关于理解内存作为一个整体使用的位置,以及寻址整个应用程序。对于位图,除非必要,否则不要将其加载到内存中,如果可能,请释放它们,并使用缓存。@Gabeschen如果可能,请释放位图是什么意思?获取堆转储并找出使用内存的位置(很可能是内存泄漏)。内存问题从来不是关于实现一个技巧,而是关于理解内存作为一个整体使用的位置,以及寻址整个应用程序。对于位图,在必要时才将其加载到内存中,尽可能释放它们,并使用缓存。@Gabeschen尽可能释放位图是什么意思?