加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 了解task_basic_info任务resident_size

发布时间:2020-12-15 01:48:37 所属栏目:百科 来源:网络整理
导读:简短的问题:有人(cit. 5)告诉我,我的系统可以回收常驻内存.这是什么意思?这是否意味着我的应用程序没有使用该内存,或者是与我的应用程序当前使用的内存直接相关的驻留内存值?除了 answers之外,我没有找到太多关于此的文件. 我想解决一个问题.我正在编写一
简短的问题:有人(cit. 5)告诉我,我的系统可以回收常驻内存.这是什么意思?这是否意味着我的应用程序没有使用该内存,或者是与我的应用程序当前使用的内存直接相关的驻留内存值?除了 answers之外,我没有找到太多关于此的文件.

我想解决一个问题.我正在编写一款适用于iOS 6.0和Cocos2d 2.0的游戏,但我确实遇到了一些内存问题.我有Cococs2d 2.0作为静态库,我使用ARC编写了我的代码(我怀疑是这个原因).

从初始场景到角色选择场景,再到行星选择场景,最后是游戏场景,我观察到内存的resident_size增加了.

我在每个场景init添加了this代码,我跟踪了这??些值.下图显示了我的用户体验路径.在左列上有场景名称,在第二列上是正常流程中使用的内存量(不返回到前一场景),在第三列列中有常驻内存的值返回和前进来自特定的场景.

我们可以观察到主场景呈现的问题可能与其他场景不同.每次加载场景时,内存增加大约15 MB.

我在场景上运行独立测试(使用重载调用方法),我得到以下值:

有趣的是,在第三次加载后,在CharacterSelection场景上运行相同的测试并没有逐渐增加内存(保持37MB).但是我不明白为什么最初从27 MB到32 MB而不是37 MB(或者,我应该说,我不明白为什么它从32 MB到37 MB).

我运行另一组测试试图从一个场景解析到另一个场景,我确实得到了有趣的结果.这是架构:

**有人answered对我说“驻留内存是对已分配给您的应用程序但尚未被系统回收的内存的度量,但系统可以回收一些/大部分驻留内存.”

这是否意味着驻留内存值不一定是我的应用程序使用的内存?

根据我的测试,场景与其使用的内存和驻留内存值之间似乎存在相关性.

因此,如果这是正确的,我应该继续尝试解决这个问题,因为驻留内存值越高,我的APP就越有可能被杀死.相反,如果系统可以使用内存,那么就不会发生崩溃.鉴于存在崩溃,我认为内存以某种方式泄露.但是泄漏工具没有检测到任何泄漏(这是因为我使用的是XCode 4.5?).

有帮助吗?这与使用ARC有关吗?

解决方法

问题是我在新场景的init方法中测量内存.因此,该报告包括前一场景的资产(因为它尚未被解除分配).

添加0.1延迟的回调解决了它并回答了我的问题:

问:

someone (cit. 5) told me that resident memory could be reclaimed by my
system. What does this mean? Does it mean that my App is not using
that memory or is the resident memory value directly related to the
memory being currently used by my App?

A:

它是与我的应用程序使用的内存直接相关的内存.使用this function的回调延迟加上对[[CCTextureCache sharedTextureCache] dumpCachedTextureInfo];的调用将确认这一点.

问:

Any help? Is this related to using ARC?

A:幸好不是在这种情况下.在某些场景中还有其他问题导致泄漏.例如,起始场景是另一个场景的子类.这个起始场景有一些子节点被添加为子节点,在场景的清理方法中没有被删除.添加显式删除这些子节点解决了该问题.我不确定为什么这是必要的(我期待所有子节点被自动删除)但它解决了这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读