Bitmap的释放流程

      上篇文章谈到了Bitmap的生成,现在说说Bitmap的释放,要不总是有种没说完的感觉。

      Bitmap的释放相对来说,比较简单,还是先上张时序图吧!


一些说明:
1,AndroidPixelRef的设置是在Bitmap生成的GraphicsJNI::setJavaPixelRef里完成的,这里可以参见文章《Bitmap的生成流程之BitmapFactory.decodeResource VS BitmapFactory.decodeStream》。具体代码如下:

bool GraphicsJNI::setJavaPixelRef(JNIEnv* env, SkBitmap* bitmap,
                                  SkColorTable* ctable, bool reportSizeToVM) {
......
    SkPixelRef* pr = reportSizeToVM ?
                        new AndroidPixelRef(env, addr, size, ctable) :
                        new SkMallocPixelRef(addr, size, ctable);


......
}
2,VMRuntime.trackExternalFree把Bitmap占用的虚拟机heap内存归还。如果你有兴趣的话,请具体参见dalvik\vm\native\dalvik_system_VMRuntime.c。

你可能感兴趣的:(虚拟机,System)