gpt4 book ai didi

iphone - Xcode,仪器 : How to find an ever-increasingly leaking object?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:19 25 4
gpt4 key购买 nike

很难在主题行中解释我需要什么。如果您有更好的想法,请随时对其进行编辑。

问题如下:

An iOS app handles documents, always one at a time. Every time it closes a doc and opens a new, even if it's the very same doc, memory usage increases constantly, and always by the same amount.

所以有泄漏。该代码不会释放(释放)某些东西。也许它是一个数组,它添加了对文档项目的引用,并且永远不会被清除,尽管它应该被清除。

当然,Leaks Instrument 在这里无济于事,因为它都是“正确的”(它只找到没有所有者的分配)。

我现在如何使用 Instruments(或 dtrace)找到这个漏洞?如果我能简单地识别 Instruments 中那些不断添加的对象之一,那将会有所帮助,其余的将很容易。

到目前为止,我一直在使用 Allocations 工具,将检查范围设置为旧文档关闭和新文档打开的时间。尽管如此,这仍然显示了数千个对象,其中只有一个是前一个文档遗留下来的,并且仍然存在,尽管它不应该存在。我需要识别的那个物体。

我想我需要的是分配工具中的一项功能,它减去所有刚刚添加的分配,还减去启动后存在的所有分配 - 剩下的是由新文档创建的项目,但从那以后没有被释放。有没有办法获取收集到的对象集,将它们分组并进行这样的设置操作?可能不是。

每次打开文档时都会创建大约 20000 个对象,并且涉及大约 50 个源文件,无论是查看源代码还是手动检查所有对象都是无法做到的。

哦,静态分析器也无济于事。

最佳答案

我想我明白了:

秘诀在于正确使用标记堆按钮:

到目前为止,我只在加载新文档之前和之后尝试过一次。

但是当我执行此三次(加载、Heapshot、加载、Heapshot、加载、Heapshot)时,中间的 Heapshot 将列出两个文档加载之间仍然存在的对象在它周围,这正是我一直在寻找的。

关于iphone - Xcode,仪器 : How to find an ever-increasingly leaking object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5075980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com