是否需要爲每個想要完全從內存中刪除的BitmapData調用BitmapData.dispose(),或者在BitmapData對象被垃圾回收後立即釋放該緩衝區?AS3:是否需要調用BitmapData.dispose()?
1
A
回答
8
最終BitmapData
將被垃圾收集處置。
調用BitmapData.dispose()
立即釋放內存,這可以提高性能,尤其是在基於幀的動畫中大量使用位圖數據時。位圖數據可以快速消耗大量內存。
BitmapData, from the ActionScript 3.0 Reference for the Adobe Flash Platform
BitmapData.dispose()釋放由實際的位圖數據 佔用的存儲器,立即(位圖可以消耗高達64MB的存儲器)。在 使用BitmapData.dispose()後,BitmapData對象不再可用 ,如果您調用 BitmapData對象上的函數,則Flash運行時會引發異常。但是,BitmapData.dispose()不會垃圾 收集BitmapData對象(大約128字節);實際BitmapData對象佔用的內存 在垃圾回收器收集到 BitmapData對象時釋放。
相關問題
- 1. (AS3)是否需要removeEventListener?
- 2. 是否需要調用session_write_close?
- 3. 是否需要調用AsyncOperation.PostOperationCompleted?
- 4. 是否需要調用?
- 5. 是否需要調用CloseHandle?
- 6. 我是否需要調用MessageBox調用?
- 7. ConnectivityManager.getActiveNetworkInfo()是否需要經常調用?
- 8. (何時)是否需要調用SHA1Managed.Initialize()?
- 9. 是否需要從UserData調用cfn-init?
- 10. 調用entityManager.find()是否需要EntityTransaction?
- 11. 是否需要調用命令
- 12. JUnit測試 - 是否需要調用JUnitCore.main()?
- 13. HttpURLConnection:是否需要調用connect()?
- 14. DynamoDB - 是否需要調用shutdown()?
- 15. 我是否需要調用EasyTracker.getInstance(this);每次我需要easyTracker?
- 16. Laravel調度 - 是否需要域名
- 17. 是否需要調用std構造函數的調用?
- 18. 是否需要使用imap_close?
- 19. 是否需要使用Clonable?
- 20. 我的AS3項目是否需要預加載器?
- 21. 是否需要LDT?
- 22. 是否需要AudioServicesDisposeSystemSoundID?
- 23. 是否需要my_require_once?
- 24. 是否需要user_photos?
- 25. UI_APPEARANCE_SELECTOR是否需要?
- 26. 是否需要UserController?
- 27. 是否需要glDisableClientState?
- 28. 是否需要main.cpp?
- 29. 是否需要DefaultAppPool?
- 30. 是否需要OTP?
我不知道爲什麼,但是當我像這樣調用dispose()時:'bitlayer.bitmapData.dispose(); bitlayer.bitmapData = new BitmapData(width,height,true,0);'很多時候,閃存快速增長。相反,如果我設置null:'bitlayer.bitmapData = null; bitlayer.bitmapData = new BitmapData(width,height,true,0);'閃存根本不增長。我認爲'dispose()'有一個bug。 – marbel82