iPhone 3G/2G, sdk 3.0 内存问题

Posted

技术标签:

【中文标题】iPhone 3G/2G, sdk 3.0 内存问题【英文标题】:Memory problem on iPhone 3G/2G, sdk 3.0 【发布时间】:2009-07-14 07:50:13 【问题描述】:

我在游戏中遇到了崩溃,这是崩溃日志(这是一次压力测试):

PID RPRVT RSHRD RSIZE 命令 1 340K 224K 436K 发射 14 124K 160K 216K 更新 15 568K 164K 620K 系统日志 16 792K 612K 1.16M 锁定d 17 2.22M 664K 3.04M 媒体服务器 18 296K 160K 440K mDNS响应者 20 540K 568K 1.25M iapd 21 248K 236K 456K 公平竞争 22 640K 168K 1012K 配置 23 6.42M 6.73M 9.14M 跳板 26 660K 212K 1.01M 通讯中心 27 308K 164K 620K BT服务器 28 19.1M 692K 19.9M TQ服务器 29 232K 188K 284K 通知 1830 368K 596K 672K 点 1833 140K 164K 280K afcd 1835 148K 164K 288K afcd 1837 140K 160K 260K 通知_pro 1848 3.83M 4.89M 4.76M MobileMusicPlaye 1855 19.7M 7.65M 23.6M 我的游戏 **** 1856 616K 5.25M 2.27M 手机 1857 292K 240K 1.25M 报告崩溃

MyGame 的 RSIZE 仅为 23.6MB,但“Memory status: 11”表示程序由于内存问题收到了来自 OS 的关机命令。

因此,如果内存问题不是由我的程序引起的,有没有办法忽略操作系统的关机命令?

根据 iPhone 开发指南,操作系统将终止遇到内存问题的 bg 进程。但 SpringBoard 并未终止。所以我认为应该有一种方法可以在程序中关闭内存管理。

【问题讨论】:

【参考方案1】:

您不能忽略内存警告。您能做的最好的事情就是尝试释放一些内存并希望您的应用不会被杀死。

请参阅此discussion 以获得一些见解。

【讨论】:

但它无法解释为什么 SpriteBoard 没有被终止。我已经尽力减少MyGame中的内存使用,它被杀死时只占用23.6MB。 Springboard 不会因为 Apple 编写而终止。我似乎记得 24M 是某种你应该留在下面的玻璃天花板。 我以为不是 Apple 的人制造了 Springboard……但它占用了太多内存。 MyGame 是一款 3d 游戏,我需要内存来加载许多纹理和模型。降低纹理质量,否则模型会使其看起来很糟糕。我以前做过这个,加载只出现在屏幕上的东西。现在很难减少内存使用。 是24MB的私有内存吗?我以前听说过。

以上是关于iPhone 3G/2G, sdk 3.0 内存问题的主要内容,如果未能解决你的问题,请参考以下文章

MAP 与 iPhone 3.0 SDK 一起使用都有哪些限制?

iPhone SDK 3.0 针对 2.2.1 SDK

在iPhone 3.0 SDK中改变了渐变技巧?

iPhone - 在 3.0 和 4.0 操作系统/SDK 上播放视频?

在 iPhone 3.0 SDK 中为 MoviePlayer 添加自定义控件

在 iPhone SDK 3.0 中链接静态库