System.gc 没有立即执行

System.gc 没有立即执行

  作为一个安卓开发人员,你一定见过OOM()

最近在做一个大图片加载的项目,由于内存实在是太小,需要对bitmap进行gc清空,这个时候我发现一个问题,GC的处理并不及时,为啥。。。。。。。

private void gcBitmap(Bitmap bitmap) {
if (bitmap != null && !bitmap.isRecycled()) {
bitmap.recycle();
bitmap = null;
System.gc();
}
}
以上为bitmap GC方法

查看源码发现。GC的确不是立刻执行的。
我们首次调用gc的时候,我们只是告诉系统这个东西我不需要了,赶紧给我清空掉,真正的GC操作要等待justRanFinalization=true的时候才能执行。 所以我们如果不想等待系统自己操作的话,我们需要去把justRanFinalization这个值设置为true。之后再次调用GC

System.gc();
runtime.runFinalizationSync();
System.gc();

展开阅读全文

没有更多推荐了,返回首页