【问题标题】:Where is stored the backing data of a bitmap in Android > 3.0?Android > 3.0 中位图的支持数据存储在哪里?
【发布时间】:2020-02-02 16:33:00
【问题描述】:
在 Android 的 cache bitmap docs. 中有:
此外,在 Android 3.0(API 级别 11)之前,位图的支持数据存储在本机内存中 (...)
那么在Android 3.0之后,位图的backing data是什么?
【问题讨论】:
标签:
android
bitmap
android-bitmap
android-memory
【解决方案1】:
再挖掘一点后,我找到了the answer:
为了为本课做准备,以下是 Android 位图内存管理的演变过程:
在 Android 2.2(API 级别 8)及更低版本上,当垃圾收集发生时,您的应用线程会停止。这会导致延迟,从而降低性能。 Android 2.3 增加了并发垃圾回收,这意味着在不再引用位图后很快就会回收内存。
在 Android 2.3.3(API 级别 10)及更低版本中,位图的支持像素数据存储在本机内存中。它与存储在 Dalvik 堆中的位图本身是分开的。本机内存中的像素数据不会以可预测的方式释放,可能会导致应用程序短暂超出其内存限制并崩溃。从 Android 3.0(API 级别 11)到 Android 7.1(API 级别 25),像素数据与关联的位图一起存储在 Dalvik 堆中。在 Android 8.0(API 级别 26)及更高版本中,位图像素数据存储在本机堆中。