我使用Bitmaps为Android创建了一款2D游戏。关闭游戏后,android studio内存部分显示内存未解除分配。那么如何解除分配给位图的内存。
我有一个名为chopper
的Bitmap数组,我正在初始化像
chopper[0] = BitmapFactory.decodeResource(getResources(), R.drawable.copter1);
chopper[1] = BitmapFactory.decodeResource(getResources(), R.drawable.copter2);
chopper[2] = BitmapFactory.decodeResource(getResources(), R.drawable.copter3);
所以在关闭游戏时我试图释放像
这样的记忆chopper[0]=null;
但它没有在android studio内存图中显示可用内存。是免费记忆的方式吗?如果不是,我怎么能在关闭游戏之前释放内存。 提前致谢
答案 0 :(得分:1)
在Java中,将对象设为null将不会释放内存。如果垃圾收集器下次运行,如果在任何地方都没有引用该对象,则垃圾收集器可能会释放内存。
在您的情况下,假设您在活动中使用此数组,请关闭可能在您的活动的onDestroy()
方法中使用此数组的所有资源,并确保没有任何对象浮动,在此之后引用此对象活动被破坏。
答案 1 :(得分:0)
您必须调用bitmap.recycle()
API才能实际释放内存。
请参阅有关bitmaps memory management