设备 (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 应用程序中的内存警告 的相关文章

  • iPhone OpenGL ES 2.0 与 Cocos2D 混合给出了意想不到的结果

    我有非常简单的 CCScene 只有 1 个 CCLayer 包含 采用标准混合模式的 CCSprite 背景 CCRenderTexture 绘制画笔 其精灵附加到背景精灵上方的根 CCLayer bgSprite CCSprite sp
  • UIGestureRecognizers 的多个手势(iPhone、Cocos2d)

    我使用 Cocos2d 渲染精灵 并使用 UIGestureRecognizers 允许用户平移 旋转和缩放精灵 我使用如下代码单独工作 UIPinchGestureRecognizer pinchRecognizer UIPinchGes
  • 忽略精灵透明区域的像素完美碰撞

    我最近从这个链接中发现了两个精灵之间的像素完美碰撞 http www cocos2d iphone org forum topic 18522 http www cocos2d iphone org forum topic 18522 我只
  • cocos2d中如何填充纹理?

    我有一个形状和纹理图像 shape png texture png 我想在cocos2d 中将形状绘制为texture png 图案 形状尺寸比纹理图像大得多 因此自动填充整个形状的纹理图案 我试图认识路 找不到 有人有办法解决这个问题吗
  • 在 Cocos2d 和 Box2d 中获取物体上的接触点

    我很new对于 Cocos2d 和 Box2d 我 一直在关注教程 http www raywenderlich com 和 一般是黑客攻击 不过 我有一个 我无法解决的问题 我创建了 2 个主体和固定装置 在 Box2d 世界中 并创建了
  • iPhone:cocos2d 中相机跟随玩家

    我正在用 cocos2d 制作 iPhone 游戏 我想知道如何使相机 视图遵循特定的精灵 我会使用 CCCamera 类吗 是的 CCCamera 可以工作 然而 它有一些缺点 使其不适合某些用途 相对于该精灵移动图层以及所有其他对象可能
  • iOS 5 文档目录中存储和读取文件

    在我的游戏中 当完成一个关卡时 应用程序会将 1 存储在应用程序文档目录中的文件中 当游戏加载时 玩家只有在完成前一关后才能玩该关卡 当我通过 Xcode 在设备上测试游戏时 应用程序可以正常运行 并且只有完成上一个关卡后才能玩该关卡 但是
  • 如何在 UIView 上添加 CCSprite

    在我的 cocos2d 应用程序中 我有一个UIView我通过添加子视图来显示在屏幕上 CCDirector sharedDirector openGLView 但我想知道是否有办法显示CCSprite在此视图之上 因为我必须与这些 CCO
  • 基于 cocos2d-box2d 的项目中出现“'uniqueIdentifier' is deprecated”警告

    我基于cocos2d box2d创建一个新项目 两个文件中总是有4个警告 一个是CLScoreServerPost m 代码有警告如下 self addValue UIDevice currentDevice uniqueIdentifie
  • 将 cocos2d 视图添加到 UIView

    我已将 cocos2d 2 0 集成到现有的 iOS 项目中 并希望能够创建一个视图并将其作为子视图添加到现有视图中 cocos2d 设置代码应该放在哪里以及 cocos2d 视图如何在 UIView 中可见 我已关注雷 文德利希教程 ht
  • 如何将 CCSprite 从一个父级转移到另一个父级?

    我有一个CCSprite called sprite那是一个孩子CCLayer called movingLayer它本身就是当前的子项CCLayer运行我的游戏逻辑 所以它是self在这种情况下 movingLayer以永远重复的动作在屏
  • 在cocos2d中平滑拖动Sprite - iPhone

    我已经实现了对精灵对象的拖动 如下所示 BOOL ccTouchesMoved NSSet touches withEvent UIEvent event UITouch touch touches anyObject CGPoint lo
  • cocos2d v3 在应用程序使用过程中重新定向屏幕

    所以在 cocos2d 中 我相信我使用的是 v2 1 我这样做是为了锁定和设置方向 AppDelegate delegate AppDelegate UIApplication sharedApplication delegate con
  • Cocos2d 3.0中如何获取winSize

    我在Cocos2d 1 0和Cocos2d 2 0中使用了以下代码 但在Cocos2d 3 0中似乎找不到 CGSize s CCDirector sharedDirector winSize 如何在Cocos2d 3 0中获取屏幕尺寸 您
  • 混合 C++ 和 Objective-C

    我使用 C 作为应用程序主干 使用 Objective C 作为 GUI 这很好 但是当谈到在 Objective C mm 文件 中将这些代码混合在一起时 我有几个问题 1 我可以将 STL 容器与 Objective C 或 Cocos
  • NSMutableArray 根本不工作

    我正在尝试将精灵添加到NSMutableArray但它没有添加它们 这就是我所拥有的 NSMutableArray tail CCSprite block int j void handleTail CCSprite pos CGPoint
  • Box2d 自定义多边形和精灵不匹配

    我正在使用物理编辑器在 Box2d 中创建多边形 它生成多边形并在非视网膜显示器中工作正常 但在视网膜显示器中不起作用 我已附上两个显示器的屏幕截图 现在 当谈到视网膜显示器时 未设置多边形在汽车上方 这是该图像 这是我在项目中使用的代码
  • Cocos2d - 将 GLImageProcessing 效果应用于 CCSprite

    苹果的oplenglGL图像处理 http developer apple com library ios samplecode GLImageProcessing Introduction Intro html加载图像并应用图像调整 亮度
  • cocos2d中获取CCSprite的绝对位置

    在我的游戏中 我有一个CCSprite绕另一个轨道运行CCSprite 很像电子绕原子核运行 我将电子作为原子核的子元素 以使动画更加简单 我所要做的就是旋转原子核 电子就会很好地跟随 然而 我的问题来自于想要让轨道动画看起来更时髦一点 通
  • Cocos2d 变色精灵

    我需要我的精灵从一种颜色过渡到另一种颜色 然后不断地 比如蓝色 然后绿色 然后紫色 但我找不到任何好的动作 我想知道 我应该使用动画吗 或者是否有为此采取的联合行动 您可以使用 CCTintTo 操作来更改精灵的颜色 sprite runA

随机推荐

  • 斜杠(“/”)是否等同于 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 当应用程序在设备上运行时 应用