作者qrtt1 (null)
看板AndroidDev
标题Re: [问题] 如何解决out of memory?
时间Sat Jul 9 21:01:45 2011
※ 引述《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
1F:推 bobyang79:现在回头才看到大大这篇文章,很有帮助多谢了 08/17 16:24