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();
上一篇: C++ 获取文件夹下的所有文件名称