【问题标题】:How to release memory in android如何在android中释放内存
【发布时间】: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


    【解决方案1】:

    Java 没有指针,您不能显式释放内存。

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

    因为您似乎在做与图形相​​关的工作,我猜您在某处使用位图,这些使用大量内存并且需要释放内存。使用完位图后,请务必致电Bitmap.recycle()

    【讨论】:

      【解决方案2】:

      在您不再引用您创建的对象后,为其分配空值。这显然不会立即释放内存,而是通过这种方式告诉 GC 该对象有资格进行垃圾收集..(有效的 java)。

      编辑:正如@spatulamania 所说,如果您正在管理位图,则必须调用回收(我认为它调用 c/c++ 免费)方法以释放与之相关的内存。将位图引用设置为 null 是没有用的,因为位图是本机实现的,而 java 对象只有几个字节。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-26
        • 2011-04-02
        • 2014-06-13
        • 1970-01-01
        • 2010-12-06
        • 2012-01-18
        • 2011-11-03
        • 2023-04-05
        相关资源
        最近更新 更多