2017-03-25 71 views
0

很明顯,在renderscript中分配內存可以使用分配類來完成。我不清楚這個內存將如何釋放或釋放。Renderscript中的內存分配和重新分配

例如,如果我想創建一個由10個元素組成的數組,並使用分配類進行操作。 Android文檔表明它就像在C中使用malloc一樣簡單。如果任何人都可以幫助我理解在renderscript中如何釋放內存,我將不勝感激。

回答

1

與其他java對象相同,當垃圾回收器確定對Allocation對象的引用無法訪問時,GC發生時它可釋放Allocation對象並調用本機端析構函數釋放內存。

此外,用戶可以調用Allocation.destroy()手動釋放它:https://developer.android.com/reference/android/renderscript/Allocation.html#destroy()

+0

DOC上是說** destroy()方法意味着setSurface(空)**。那麼如果我使用Allocation創建一個整數或浮點內存,然後使用destroy()釋放它,這會適用嗎? –

+0

setSurface用於當您使用相機或UI視圖表面共享內存時。這意味着在銷燬分配對象時,它將減少對保持的表面對象的引用。分配的類型與此正交。如果你在沒有USAGE_IO的情況下創建內存,那麼只需調用destroy並釋放內存。由於使用USAGE_IO進行分配並不擁有後備內存,因此它可能只是分享它,它只能釋放它對它的引用。 – sakridge