【发布时间】:2016-01-31 14:02:58
【问题描述】:
我在 Android 开发者上关注this article,其中引用了:
在 Android 2.3.3(API 级别 10)及更低版本上,支持像素数据 位图存储在本机内存中。它与位图分开 本身,存储在 Dalvik 堆中。本机中的像素数据 内存没有以可预测的方式释放,可能会导致 应用程序短暂超出其内存限制并崩溃。作为 Android 3.0(API 级别 11),像素数据存储在 Dalvik 堆以及相关的位图。
another article 让我更加困惑:
位图是一个围绕本机堆内存区域的瘦包装器,它 存储像素数据。
我有很多疑问:
- Dalvik 堆、本机堆和本机内存有什么区别?
- 位图与像素数据有何不同?我的理解是任何图像文件(除非它是矢量图像)都称为位图 - 被压缩。 Android 解压缩/解码此信息以在屏幕上呈现像素。如果我是正确的,为什么我们需要压缩位图了?
- 像BitmapRegionDecoder 这样的类是如何工作的?我的理解是首先解码/解压缩整个位图,然后忽略超出范围的区域-这将有助于提高内存效率,但不会使解码更快。我说的对吗?
- 位图被回收后究竟会发生什么?
【问题讨论】:
标签: java android memory bitmap garbage-collection