Objective c 如何追踪记忆峰值?(s的峰值是p,而不是l。)
我有一个kiosk应用程序,它基本上显示了一堆幻灯片,上面有各种各样的信息。我最初是在一年多前开始编写的,当时我刚开始使用Objective-C和iOS开发。我发现现在我的代码风格比以前干净多了,而且我的经验也丰富多了,所以我决定从头开始重写 我用分配工具运行我的应用程序,查看内存使用情况。考虑到这是一个信息亭应用程序,一切都需要顺利运行,没有泄漏。(当然,所有的应用程序都需要在没有漏洞的情况下运行,但kiosk应用程序使这成为一个更重要的目标。)我看到了一些有趣的结果,所以我也运行了旧版本的代码 运行较旧版本的代码时,我看到的内存使用量几乎为1.15兆字节。一切似乎都在必要时分配和解除分配。然而,在我的新实现中,我看到了一些不同的东西。内存使用量在小“高原”上不断跳跃,然后最终似乎达到峰值,约为1.47兆字节的使用量。以下是新分配报告在运行超过10小时后的样子: 我担心有几个原因Objective c 如何追踪记忆峰值?(s的峰值是p,而不是l。),objective-c,ios,memory-management,instruments,memory-profiling,Objective C,Ios,Memory Management,Instruments,Memory Profiling,我有一个kiosk应用程序,它基本上显示了一堆幻灯片,上面有各种各样的信息。我最初是在一年多前开始编写的,当时我刚开始使用Objective-C和iOS开发。我发现现在我的代码风格比以前干净多了,而且我的经验也丰富多了,所以我决定从头开始重写 我用分配工具运行我的应用程序,查看内存使用情况。考虑到这是一个信息亭应用程序,一切都需要顺利运行,没有泄漏。(当然,所有的应用程序都需要在没有漏洞的情况下运行,但kiosk应用程序使这成为一个更重要的目标。)我看到了一些有趣的结果,所以我也运行了旧版本的代
- 旧项目使用plist作为后备存储(我手动读写plist文件)。新项目使用核心数据
- 新项目实现了一个库,在旧项目没有的每个“幻灯片”上调用该库。我会更关心这个库,除非我写了它,并仔细检查它,以确保我发布了所有内容,并且只在手动发布不可能的地方自动发布
- 这两个类都使用factory类来创建幻灯片。在旧项目中,factory类是一个单独的类。我认为把它变成一个普通的类会有助于解决内存问题,因为singleton从未被释放过。(因此它的属性没有发布。在新项目中,factory类正在发布,所以我不确定为什么它仍然占用所有内存(如果这是导致问题的原因)
- 旧项目在不同的地方使用字符串常量。新代码为相同的内容使用大量枚举。(新代码通常使用更多常量。)
我写了一篇详细的“如何”guide;+1好问题和好标题!好吧,玩堆照片,我想这与我的循环有关,它会重新加载滚动视图。我发布一些代码后,你能帮我吗?当然可以;发布一个包含详细信息和代码的新问题。我会扩展我的答案,稍后回答这个问题的具体细节。之后r测试和反思,我想我知道问题是什么,但不是答案。我已经发布了。请随意看一看。他们似乎结束了我的另一个问题。如果你不介意,请看看我在这个项目中使用的库。它似乎导致了内存峰值。