RenderScript - 在完成后创建的每个 Allocation 对象上调用 Allocation.destroy() 是一种好习惯吗?

RenderScript - is it good practice to call Allocation.destroy() on every Allocation object created when you're done with it?

我在使用 RenderScript 时一直遇到内存管理问题,所以我认为由于 Allocation.createFromBitmap()/createTyped() 消耗内存,Allocation.destroy() 释放它消耗的内存。

这样做是好的做法吗?对于基于 RenderScript 的程序还有什么好的做法?

Allocation的终结器会在GC发生时回收内存。

但是,是的,当您不再需要分配时销毁它们是一个很好的做法。

一条评论:从位图创建分配时调用 Allocation.createFromBitmap(RenderScript rs, Bitmap b) 通常是一个好习惯。它将使分配与位图共享数据,因此您不需要来回复制,只要位图的步幅在 32 字节或 16 字节边界上对齐。