欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

System.gc 没有立即执行

程序员文章站 2022-04-18 19:23:42
...

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();

相关标签: Android