如果我创建一个对象并将其分配给一个变量:
Obj obj1 = null;
obj1 = myFunction(params);
(这里myFunction
创建了一个复杂的对象)
后来我重新分配了变量:
obj1 = myFunction(otherparams);
在那一刻是否发生内存泄漏,因为我没有破坏以前的对象?
以下是真实情况:
Bitmap bmp;
bmp = drawMyBitmap(3);
//... some code
bmp = drawMyBitmap(4);
这里会发生内存泄漏吗?
当然,我知道我必须调用bmp.recycle
,但我不能这样做,因为真正的代码如下:
Bitmap bmp;
bmp = drawMyBitmap(3);
imageView.setImageBitmap(bmp);
//... some code
// if I try to do recycle here - I receive java.lang.IllegalArgumentException: Cannot draw recycled bitmaps
// But I need to recreate bitmap every some minutes
bmp = drawMyBitmap(4);
imageView.setImageBitmap(bmp);
那么,如何回收位图并避免内存泄漏?