我的Android應用程序大小隻有5MB,但是當我運行應用程序時,它使用了大量RAM(如12-18 MB左右)以及更多的ics設備。我試圖找到一個解釋,爲什麼我的應用程序使用大量的RAM,我也使用瞭解析推送服務。我的應用程序是圖像密集型,可能是一個可能的原因。我如何減少我的應用程序的RAM消耗。使用大量內存的Android應用程序
1
A
回答
5
原因很可能是您的應用程序是圖像密集型的。總的來說,圖像在RAM中佔用的內存要多於在磁盤上的內存。要查看圖像將使用多少內存,請使用以下公式:
For ARGB images: memory(in bytes) = width * height * 4
這是因爲ARGB圖像每像素有4個通道。
For RGB images: memory(in bytes) = width * height * 3
這是因爲RGB圖像每像素有3個通道。
所以要使用更少的內存,請嘗試縮小圖像尺寸,或者從不需要它的圖像中刪除Alpha通道。
3
設備上的5MB包含大量的壓縮數據。像您的圖像這些壓縮爲JPG或PNG格式的圖像在您的應用運行時會被解碼爲相當大的位圖。
作爲一個例子,一個300kB的PNG有時可以在內存中變成一個6MB的位圖。
在ICS上,使用了更多的內存,因爲圖像被複制用於硬件加速。
爲了減少RAM消耗,請使用較小的圖像(如較小的尺寸,而不是更多的壓縮),減少您使用的視圖數量,並確保您沒有泄漏任何內存。
相關問題
- 1. 減少Android應用程序中的內存使用量
- 2. Actionscript/Flash/AIR應用程序 - 增加最大內存使用量
- 3. Android:爲其他應用程序使用的應用程序分配的內存
- 4. Android應用程序有大緩存?
- 5. 這是否意味着應用程序的內存使用量與應用程序的大小相同
- 6. 進程使用大量內存
- 7. 優化具有大量實例的.NET應用程序的內存佔用量
- 8. 如何降低我的應用程序的內存使用量?
- 9. 如何減少我的Android應用程序使用的內存量
- 10. 我的Android應用佔用了大量的內存
- 11. Android中的應用程序的內存(CPU)使用情況
- 12. Android應用程序內存完整性
- 13. 視頻內存和Android應用程序
- 14. 如何讓我的程序的最大內存使用量OSX
- 15. Nhibernate使用大量內存
- 16. 測量分佈式應用程序的內存使用情況
- 17. IIS應用程序池的內存使用量過多
- 18. 如何減少Socket應用程序的C#內存使用量
- 19. 如何減少WPF應用程序的內存使用量
- 20. 獲取iOS中應用程序使用的內存量
- 21. 測量ios應用程序的內存使用情況
- 22. 如何測量java應用程序的使用內存?
- 23. Android應用程序的高內存使用率
- 24. 需要使用非內存SD卡的Android應用程序
- 25. 爲Android應用程序存儲大量文本
- 26. 在Android應用程序中使用大量視頻
- 27. winforms應用程序內存使用
- 28. Android應用程序的內存SQLite數據庫的最大大小?
- 29. JSF - 應用程序內存使用量在1GB左右
- 30. ASP.NET:W3WP使用大量內存和過程沒有響應