设备 (iPhone/iPad) 上的 Cocos2d/Box2d 应用程序中的内存警告

2023-12-10

这是信息个人资料->泄漏在 Xcode 中,我在 iPad 2 上运行了大约 21 分 12 秒,然后崩溃了。

实时字节 ---- 5.45 MB

生活----13547

暂时 ---- 3845036

总字节数 -- 720.31 MB

当应用程序在设备上运行时,应用程序崩溃打印收到内存警告在控制台中。

我不太确定它是如何工作的。

但请告诉我,如果一个应用程序在设备上运行了 21 分钟,在此运行期间总共使用了大约 720 MB 内存,但活动字节从未超过 7.0 MB。

我接受该应用程序一开始使用 3.25 MB 作为活动字节,并且在这次运行期间活动字节达到 5.45 MB,而且我不太确定活动字节是如何继续增加的。

但我的问题是:

它是否是一个糟糕到足以在设备上运行时产生崩溃的应用程序?

Or

我还面临其他问题吗?


您可能会在 CCTextureCache 单例中留下大量精灵。每次创建 CCSprite 时,纹理都会被缓存(静默),以便下次引用它时,加载和呈现会更快(快得多)。在模拟器中运行分配分析(参见下面的两张图片):

THIS RUN IN DEVICE

and

This run in simulator

顶部图像来自设备上的分配分析。最大内存 4.4 Mb。

底部图像是相同的应用程序,相同的游戏顺序,同时在模拟器中进行分析(峰值约为 78 Mb)。通过在模拟器中运行,我可以在分配中看到我的精灵使用的内存。在设备中,分配工具不占用该内存。

您正在寻找趋势和离散的大跳跃。如果你再也没有回来,你可能会留下未使用的精灵。就我而言,我选择在游戏执行的特定点从纹理中释放特定资源。这是来自 appController 的示例

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
    MPLOGERROR(@"Before purge");
    [[CCTextureCache sharedTextureCache] dumpCachedTextureInfo];

    [CCAnimationCache purgeSharedAnimationCache];
    [[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
    [[CCDirector sharedDirector] purgeCachedData];

    MPLOGERROR(@"%After purge");
    [[CCTextureCache sharedTextureCache] dumpCachedTextureInfo];

}  

这是最后的手段,暴力清理。但是您可以在游戏过程中的不同时刻删除特定纹理,而不会影响应用程序的“感知”响应能力。缓存在原则上通常是合理的,但在资源有限的情况下可能会很快变得棘手。了解它、进行实验,最终您将找到“保留/消失”的正确组合,以实现平稳的应用程序性能。

附注尽管模拟器对于某些测试来说效果很好,但不要使用它的“性能”作为基准。当涉及到图形时,模拟器性能毫无意义,它不使用计算机的 GPU(这就是您看到图形内存分配的原因:))。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设备 (iPhone/iPad) 上的 Cocos2d/Box2d 应用程序中的内存警告 的相关文章

  • 仅存档时出现 ARC 语义问题“多个名为‘setRotation’的方法”

    我在 cocos2dv3 中的项目正在抛出ARC语义问题发现多个名为 setRotation 的方法 其结果 参数类型或属性不匹配 归档时 发布模式 它在部署到模拟器 设备 调试模式 时运行良好 在发布模式下 编译器会混淆旋转的实现UIRo
  • cocos2d中重复背景有黑边!

    我正在尝试为我的 iPhone 应用程序设置平铺 重复背景 代码 有效 因为背景按应有的方式重复 但每次重复周围似乎都有黑色边框 我不知道为什么 图像恰好是 200x200 下面是它的外观和代码的屏幕截图 if self super ini
  • Cocos2d EXC_BAD_ACCESS

    我是 cocos2d 的新手 突然得到了这个 EXC BAD ACCESS 我做了一个新的获胜菜单 但出现了错误 我认为错误是因为我调用了一个已释放的对象 但我没有释放任何东西 我的调试控制台没有错误 这很奇怪 这是我的 Level 1 m
  • 了解 applicationSignificantTimeChange:

    我发现有时我的应用程序 Cocos2d 游戏 在显着的时间变化后会出现 错误 例如 case 1 当应用程序进入后台并在几分钟后重新启动它时 我可以看到加载图像然后应用程序 游戏恢复 case 2 当应用程序进入后台并在很长一段时间后更改应
  • cocos2d 3.x CCButton 设置精灵帧图像扭曲且回调/块不起作用

    我需要设置按钮的精灵框架 当我使用构造函数时它正在工作 CCSprite sprite CCSprite spriteWithImageNamed but png CCButton button CCButton buttonWithTit
  • cocos2d可以调节音量吗?

    我使用以下方法 在cocos2d中表达声音效果 SimpleAudioEngine sharedEngine playBackgroundMusic BackGround m4a 但背景音乐的音量太小 那么 有没有办法调节音量呢 Simpl
  • 通过游戏中心发送 NSString

    我想通过 Gamecenter 将 NSString 从另一台 iPhone iPad 发送到另一台 iPhone iPad 但它因 EXC BAD ACCESS 崩溃 在 h 文件中 typedef enum kMessageTypeRa
  • 如何在 UIView 上添加 CCSprite

    在我的 cocos2d 应用程序中 我有一个UIView我通过添加子视图来显示在屏幕上 CCDirector sharedDirector openGLView 但我想知道是否有办法显示CCSprite在此视图之上 因为我必须与这些 CCO
  • 如何在 Xcode 中使用 cocos2d?

    我下载了最新版本的 cocos2d 但我对如何在当前项目中使用它感到困惑 谁能告诉我如何在 xcode 中使用它 我正在设计一个二维迷宫 我必须进口一些东西吗 任何形式的帮助将不胜感激 是的 您需要将cocos2d文件拖到您的项目中 然后它
  • 我可以像精灵一样缩放 box2d 中的形状吗?

    因为我们总是使用cocos2d中的功能 所以我可以随时缩放我的精灵 我可以在box2d中做同样的事情吗 例如 我创建了一个圆形的身体 然后我想让它变大 我尝试在创建圆后重新分配 m radius 但不起作用 如果您只是将 shape m r
  • 如何在cocos2d环境之外为cocos2d游戏实现虚拟摇杆?

    我正在开发一款iPad游戏 使用cocos2d并且需要虚拟操纵杆 我有一个使用 SneakyJoystick 启动并运行的原型 然而 我意识到我的游戏设计要求我使用 CCTransitions 在 CCScene 的不同实例之间移动用户 以
  • Cocos2D 2.0 OpenGL 错误?

    在我的应用程序中 它在 Cocos2D 1 1 版本中运行良好 当我升级到 2 0rc0a 时 我现在只看到黑屏 并且不停地收到以下 4 个错误 直到我退出应用程序 OpenGL error 0x0506 in CCSprite draw
  • 调用插页式 iAd 只能运行一次

    我有 spritekit 游戏 每次游戏开始时都会预加载广告 UIViewController prepareInterstitialAds 游戏结束后 它应该显示广告 self view window rootViewController
  • 如何将 CCSprite 从一个父级转移到另一个父级?

    我有一个CCSprite called sprite那是一个孩子CCLayer called movingLayer它本身就是当前的子项CCLayer运行我的游戏逻辑 所以它是self在这种情况下 movingLayer以永远重复的动作在屏
  • cocos2d中忽略精灵的透明区域

    我已经被困了好几个星期了 现在试图找出如何忽略对精灵透明区域的触摸 我一直在尝试使用本教程来跟踪像素完美碰撞 http www learn cocos2d com 2011 12 fast pixelperfect collision de
  • Pvr 在 cocos2d 3.2 版本中翻转:从 2.1 移植时的困境

    我目前正在将一个游戏从cocos2d 2 1版本移植到3 2版本 我们有超过 3600 个未翻转的 pvr gz 文件 例如在 2 1 下生成和工作的文件 我们使用TexturePacker测试了pvr图像的flipY选项 并且确实有足够的
  • 两条线之间的角度错误

    我想得到两条线之间的角度 所以我使用了这段代码 int posX ScreenWidth gt gt 1 int posY ScreenHeight gt gt 1 double radians degrees radians atan2f
  • 替换精灵中的图像-iPhone的cocos2d游戏开发

    我想改变精灵图像 举例来说 mainSprite Sprite spriteWithFile redFile png self addChild mainSprite 在这里 Sprite 已经添加到图层中 我有可以访问它的 mainSpr
  • 重用cocos2d动作

    是否可以 并且是一个好的实践 为使用相同操作的多个 CCSprite 重用相同的操作 因为如果我有 10 个 CCSprite 所有这些都需要缩放 我创建了一个名为scaleAction 的缩放操作 是否可以对精灵重复使用相同的动作 当我尝
  • 如何在cocos2d中测试精灵碰撞?

    我如何开始实现精灵碰撞类 正如 Eric 指出的 CGRectIntersectsRect 是测试两个边界矩形是否重叠的方法 使用 CCNode 类的boundingBox 方法获取每个精灵 或其他节点 的正确边界框 在这里查看我的回答 C

随机推荐

  • 斜杠(“/”)是否等同于 HTTP URL 路径部分中的编码斜杠(“%2F”)

    我有一个网站可以治疗 and 2FURL 的路径部分 而不是查询字符串 中的情况有所不同 根据 RFC 或现实世界 这是一件坏事吗 我问这个问题是因为我不断遇到我正在使用的 Web 框架 Ruby on Rails 及其下面的层 Passe
  • 尾随零的数量

    我写了一个函数尾随零 n 中 返回数字的二进制表示形式中尾随零的数量 Example 4二进制是100 所以本例中的函数返回2 unsigned trailing zeroes int n unsigned bits bits 0 whil
  • Lucene 有快速、准确的荧光笔吗?

    我一直在使用 Java Lucene 荧光笔 在沙箱包中 一段时间 然而 当涉及到匹配搜索结果中的正确术语时 这并不是非常准确 它适用于简单查询 例如搜索两个单独的单词将突出显示结果中的两个代码片段 但是 它对于更复杂的查询表现不佳 在最简
  • Angular:从资产文件夹中读取所有文件

    tltr 我可以从角度访问资产目录吗 我的文件夹中有一堆 SVGsrc assets icons我使用的mat icon 唯一的缺点是当我添加新图标时 我必须添加文件 并且必须将文件名添加到一个数组中 我用该数组循环将其添加到matIcon
  • 如何使用星号等引导图标来给出星级评定?

    如何使用 Bootstrap 图标通过 css 或 jquery 给出星级评级 由于我被告知不要为此使用任何插件 因此我对如何更改星形图标的颜色以及如何使星形图标从起始星形到单击星形的颜色感到困惑 你实际上可以这样做PURE CSS 演示小
  • 打字稿限制对象属性的数量

    是否可以限制对象属性的数量 假设我想限制对象只有一个字符串属性 具有任何名称 我可以这样做 index string any 限制属性的类型 但是可以限制属性的数量吗 Stackoverflow 上这个问题有很多答案 包括这个详细的 但它们
  • Java OpenCV + Tesseract OCR“代码”识别

    我正在尝试自动化一个流程 其中有人手动将代码转换为数字代码 然后我开始阅读有关 OCR 的内容 所以我安装了 tesseract OCR 并在一些图像上进行了尝试 它甚至没有检测到接近代码的东西 在阅读了 stackoverflow 上的一
  • 从 GitHub 克隆存储库

    我正在开发一个项目 需要在 div 中添加拖放功能 然后我开始查看拖放功能的库 这些库也应该适用于移动设备 并找到了一个这样的库 名为Dragula 我尝试在我的机器中克隆存储库 我下载了 git 看起来像这样 但问题是我无法从 GitHu
  • .htaccess - 使目录不可见

    我有一个 htaccess 文件 当前如下所示
  • SwiftUI 列表颜色背景

    如果我列出静态项目 我无法更改视图的背景颜色 这是我的代码 NavigationView ZStack Color AppBackgroundColor edgesIgnoringSafeArea all List Section head
  • Crosswalk 使 Visual Studio Android 模拟器崩溃

    这段代码 public class MainActivity extends Activity Override protected void onCreate Bundle savedInstanceState super onCreat
  • Xamarin 表单:ios 的启动器图标

    我正在尝试从 Mac 设置 xamarin forms ios 项目的启动器图标 我执行了以下操作 但仍然显示默认图标 1 在解决方案资源管理器中双击 Info plist 文件将其打开进行编辑 2 向下滚动到应用程序图标部分 3 From
  • 如何在 Jquery 成功方法中获取“最后插入数据库的 ID”?

    好吧 在我的添加联系人表单中 我使用 Jquery 和 Php 将数据插入到 Mysql 数据库 已成功将数据插入数据库 现在我要将成功的页面重定向到index php cdid last id 但我怎样才能得到这个jquery成功方法中的
  • 不区分大小写的 utf8 选择

    在 SQLite 中我想不区分大小写 SELECT LIKE name 对于正常的拉丁名称工作正常 但是当名称为 UTF 8 且包含非拉丁字符时 选择将区分大小写 如何使其像拉丁字符一样不区分大小写 附注我的 sqlite 是 v3 并且我
  • 是 Azure DevOps 构建管道,有没有办法从另一个作业中取消一个管道作业?

    我有一个 Azure DevOps 构建管道 其中包含两个代理作业 我将其称为作业 A 和作业 B 我希望这些作业同时运行 但如果作业 A 失败 那么我不需要作业 B 运行完成 有没有办法向作业 A 添加一个任务 如果作业 A 的任何任务失
  • 通过key获取字典值

    如何通过函数上的键获取字典值 我的功能代码 以及我尝试的命令不起作用 static void XML Array Dictionary
  • 如何使用事件 @select 从 Vue.js 的段落中选择一些文本?

    我正在使用 Vue jsNuxt在 SSR 中 我希望当我突出显示某些文本时获取该文本并对其执行操作 我找到了一种方法 可以用一些文本来做到这一点
  • 根据条件使用另一个表的列更新列值[重复]

    这个问题在这里已经有答案了 我有两张桌子 表1 id 商品 价格 值 id item price 10 book 20 20 copy 30 30 pen 10 table2 id 商品 价格 值 id item price 10 book
  • 为什么图像没有保存在 django 的媒体目录中?

    我正在尝试将图像保存在 media images 目录中 并已完成下面描述的每个必要步骤 但毕竟 我没有在我的目录中获取图像 请有人指导我问题出在哪里 谢谢 模型 py from django db import models Create
  • 设备 (iPhone/iPad) 上的 Cocos2d/Box2d 应用程序中的内存警告

    这是信息个人资料 gt 泄漏在 Xcode 中 我在 iPad 2 上运行了大约 21 分 12 秒 然后崩溃了 实时字节 5 45 MB 生活 13547 暂时 3845036 总字节数 720 31 MB 当应用程序在设备上运行时 应用