Re: [問題] 如何解決out of memory?
※ 引述《bobyang79 (宗樺)》之銘言:
: 有沒有辦法在不砍圖片的情況下解決out of momory的問題?
: 感覺不少遊戲的圖片量應該還是比我設計的多才對
: 不知道有沒有大大遇到這類圖片太多無法放置的問題?
顯示的圖多,不代表要有很多 Bitmap 物件。
像 Media Player 以每秒 29 張圖來說,
一分鐘 640 * 480 的圖以 RGB565 格式儲存會有:
640 * 480 * 2 * 29 * 60 bytes
不過 Bitmap 被畫出去後,內容就不重要了。
所以,實際上 Media Player 只會有
一個 SurfaceView 跟一個 Bitmap
僅花 640 * 480 * 2 bytes 被 Bitmap 使用。
尚未 decode 的 video packet 會比這個小。
靠著重複使用『同樣大小』的Bitmap能省去許記憶體。
遊戲對圖片的應用會比 Media Player 再複雜些,
但你還是能整理出同一系列大小的圖,
去 reuse 少數的 Bitmap,
同樣的在 Bitmap 被畫出來之後,它就能回收使用了。
另外,如果是實作 Media Player 與畫面變動比較頻繁的遊戲
更不建議做釋放 Bitmap 並且觸發 GC 的動作。
GC 可能會讓你的程式停下 20 ~ 200ms 左右
並且可能會讓 VM 要使用記憶體的塊更加碎裂
(忘了哪一份 slide,
印象是 Google 一年一度大會有個講
Android 與遊戲開發的 Session)
你必需實作自己的 Bitmap Pool (有需也要得管理 ByteBuffer)
來管理 Bitmap 使用的總量。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.172.32
推
08/17 16:24, , 1F
08/17 16:24, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章