【发布时间】:2011-12-08 10:24:59
【问题描述】:
我需要释放下面的指针,如何释放canvas、paint和matrix的内存?
Canvas pcanvas = new Canvas();
Paint mPaint = new Paint();
Matrix matrix = new Matrix();
提前致谢。
【问题讨论】:
标签: android memory-management memory-leaks out-of-memory
我需要释放下面的指针,如何释放canvas、paint和matrix的内存?
Canvas pcanvas = new Canvas();
Paint mPaint = new Paint();
Matrix matrix = new Matrix();
提前致谢。
【问题讨论】:
标签: android memory-management memory-leaks out-of-memory
Java 没有指针,您不能显式释放内存。
但是可以leak memory in Java and Android。如果您的任何对象引用非托管内存,您需要让他们知道何时可以释放该内存。
因为您似乎在做与图形相关的工作,我猜您在某处使用位图,这些使用大量内存并且需要释放内存。使用完位图后,请务必致电Bitmap.recycle()。
【讨论】:
在您不再引用您创建的对象后,为其分配空值。这显然不会立即释放内存,而是通过这种方式告诉 GC 该对象有资格进行垃圾收集..(有效的 java)。
编辑:正如@spatulamania 所说,如果您正在管理位图,则必须调用回收(我认为它调用 c/c++ 免费)方法以释放与之相关的内存。将位图引用设置为 null 是没有用的,因为位图是本机实现的,而 java 对象只有几个字节。
【讨论】: