2011-10-15 36 views
0

我需要释放下面的指针,如何为canvas,paint和matrix释放内存?如何在android中释放内存

Canvas pcanvas = new Canvas(); 

Paint mPaint = new Paint(); 

Matrix matrix = new Matrix(); 

在此先感谢。

回答

5

Java没有指针,你不能明确释放内存。

但是有可能leak memory in Java and Android。如果您的任何对象引用了非托管内存,则需要让他们知道何时可以释放该内存。

因为它似乎是你正在做相关的图形的工作,我猜你使用位图的地方和这些使用大量的内存和存储需要被释放。当您完成使用位图时,请确保您拨打Bitmap.recycle()

1

在您没有更多地引用您创建的对象之后,为其分配空值。这显然不会立即释放内存,但通过这种方式,您告诉GC该对象符合垃圾回收的条件..(有效的Java)。

编辑:作为@spatulamania说,如果你正在管理的位图,你必须调用循环(它调用C/C++的,我认为)方法,以便与关联的内存。设置为null时,位图引用无用,因为位图是本机实现的,而java对象只有几个字节。