我使用安卓工具“内存监测器”来修补内存泄漏,它非常有用。然而,我需要澄清一点。有时候,在运行应用程序后,已分配的内存为“47MB”。当应用程序与用户交互时,它会上下波动。然后,当我点击“引起GC”时,已分配的内存降至“30MB”。如果我再次点击,它会降到“17MB”。我的应用程序从17MB开始。我为什么需要点击两次“引起GC”才能回收所有内存?这是意外情况吗?还是我只需点击一次?
byte[]
)。第一次GC将释放位图。在GC完成后不久,位图的finalizer将运行,释放JNI全局ref。然而,byte[]
仍然在堆上,直到下一个GC通过注意到它不再被引用为止。(这就是Skia库实际处理Bitmaps的方式,直到“Ice Cream Sandwich”或那个时期。)