我的问题是关于我面临的内存泄漏(android开发),但无法找到相同的根本原因。内存泄漏 - 初始化另一个类的位图类型实例变量
我有两个类 - A和B. A类的对象是B - objectB。 B类有一个Bitmap类型的实例变量mTempBitmap。 在A类中,我创建了一个位图对象aBitmapObject & initialize - objectB.mTempBitmap = aBitmapObject。 在B类中,我在API onDraw()中将mTempBitmap设置为null。
现在会发生什么,在每次按键时,objectB的mTempBitmap被更新,然后调用objectB.onDraw。 但是,如果我们按键速度太快,有时onDraw()不会被调用。
在这种情况下,我可以看到内存泄漏。如果我使用堆转储并使用内存分析器MAT工具进行分析,则会发现50-60个位图对象,这不是预期的。
所以,我不清楚Java的内存泄漏的定义,但我读了几个SO帖子。
在上述情况下内存泄漏发生的原因可能是onDraw()没有被调用,而objectB.mTempBitmap没有被更新为空? (afaik,即使objectB.mTempBitmap不是空的,后面的mTempBitmap会指向另一个位图,所以应该没有内存泄漏的问题。) 是否因为某处的位图副本被创建并泄漏出来?当我们初始化objectB.mTempBitmap = aBitmap时,有没有创建位图的任何副本,或者只是将另一个引用附加到相同的位图? (afaik,只是另一个参考相同的位图,没有新的位图副本创建)
如果有人有想法,帮助!