android heap size 不断增大


我现在做的一个android项目,由于图片很多,项目跑着跑着heap size 不断增大。不管使用什么方式heap size就是不减小,一旦heap size超过60MB就报OutOfMemory了。但是data object的total size 都是稳定在2.6~2.8左右。
也使用过下列方法在Activity onCreate时,设置一些view 的图片背景

   
  protected void setViewBitmapBg(View view,int resId) {
  
if(view == null){
return;
}
Resources resources = getResources();
TypedValue value = new TypedValue();
resources.openRawResource(resId, value);
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inTargetDensity = value.density;
Bitmap bitmap = BitmapFactory.decodeResource(resources, resId, opts);

if(bitmap == null){
return;
}
view.setBackgroundDrawable(new BitmapDrawable(resources,bitmap));
}

然后在destroy时释放掉这些view所占用的背景资源

   
  protected void releaseViewBitmap(View... view) {
  
for (View v : view) {
if(v != null){
v.setBackgroundResource(0);
BitmapDrawable bd = (BitmapDrawable) v.getBackground();
if(bd != null){
bd.setCallback(null);
bd.getBitmap().recycle();
}
}
}
}

结果heap size还是不断增大,不减小。请问下各位大神,有没有办法让app 所占用的heap size减小?

Android androidanr

tc的皮皮虾 10 years, 6 months ago

我也用过类似的方法,HTC比较稳定,内存总在一个值上下徘徊。而三星的手机就会一直增加,一直到爆内存溢出。这个应该跟他们的内存处理机制不一样有关系。在结束本Activity时在destroy中把bitmap置为null,可以缓解快速崩溃。

囧囧随风酱 answered 10 years, 6 months ago

Your Answer