Re: [問題] 如何解決out of memory?

看板AndroidDev作者 (null)時間13年前 (2011/07/09 21:01), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1E654yHv (AndroidDev)
討論串 (同標題文章)
文章代碼(AID): #1E654yHv (AndroidDev)