如果我有:
一旦执行此代码,哪些4个实例仍在内存中?我知道.recycle()指示本机代码释放该对象的所有资源,但不能保证何时发生。
我提出这个问题的原因是让我们看一下以下循环:
我认为这可能会导致应用程序崩溃(内存耗尽)?如果是这样,应该如何重写循环?(如果我正在使用位图来动画显示更改的状态)。
Bitmap bitmap = Bitmap.create(..); // instance a
bitmap = Bitmap.create(...); // instance b
bitmap = null;
bitmap = Bitmap.create(...); // instance c
bitmap.recycle();
bitmap = Bitmap.create(...); // instance d
bitmap.recycle();
bitmap = null;
一旦执行此代码,哪些4个实例仍在内存中?我知道.recycle()指示本机代码释放该对象的所有资源,但不能保证何时发生。
我提出这个问题的原因是让我们看一下以下循环:
Bitmap bitmap = null;
while (true) {
bitmap = Bitmap.create(...);
}
我认为这可能会导致应用程序崩溃(内存耗尽)?如果是这样,应该如何重写循环?(如果我正在使用位图来动画显示更改的状态)。
recycle()
之后调用gb()
,你可以确信最后两个不在内存中了。Android开发者:这不会同步释放像素数据;它只是允许垃圾回收器在没有其他引用时进行垃圾回收。
- Brais Gabin