我为 iPad 开发 cocos2d iOS 应用程序。当我测试内存泄漏和对象分配时,我的 Live Bytes 是稳定的, 但是当我运行 Activity Monitor 时,我看到我的应用程序的实际内存使用量每秒增加 0.02MB。
我想问这正常吗,有人遇到过类似的问题吗?
我为 iPad 开发 cocos2d iOS 应用程序。当我测试内存泄漏和对象分配时,我的 Live Bytes 是稳定的, 但是当我运行 Activity Monitor 时,我看到我的应用程序的实际内存使用量每秒增加 0.02MB。
我想问这正常吗,有人遇到过类似的问题吗?
这是完全合理的,因为 Cocos2d(至少 0.9.x 和 1.0 分支)倾向于自动释放所有内容。这可能会导致您在屏幕上循环生成大量精灵的情况下积累内存。如果您确实在自动释放并且没有泄漏,那么在您的循环中添加一个自动释放池可能是一个快速修复。也就是说,您实际上可能正在泄漏。
为了调试内存泄漏,我会从 Leaks Instrument 开始,也许还有 Allocations 工具。在 Xcode 中,点击Command+ I,或Product -> Profile
打开探查器后,您将看到一个包含大量调试工具的菜单:
选择泄漏后,您将看到这个方便的窗口,其中包含各种有用的信息:
最重要的是,您会以图表的形式看到内存分配和泄漏。在底部,您可以看到各种有用的信息,例如分配了哪些对象、使用了多少内存等等。
有关使用仪器进行 Xcode 调试的完整处理,请查看这个方便的 Apple 开发人员视频(需要登录)。
一年后,我有这个确切的问题。事实证明,我启用了僵尸,这是我每秒增加内存的原因。
我记得我有这个问题,因为我记录了调试消息!
我在循环周期(每帧)中记录此消息,这就是内存增加的原因!
请清除或评论所有日志消息,这将解决您的问题:)