gpt4 book ai didi

iOS 内存病疯狂

转载 作者:行者123 更新时间:2023-11-29 04:15:12 25 4
gpt4 key购买 nike

我最近将一个项目移植到 ARC,因为我遇到了崩溃问题并实际确定了原因,无论是泄漏还是保留周期等,现在我已经将其移植了,我还没有进行大量测试来看看是否它仍然崩溃,因为我没有设法通过事件监视器,当它显示我的应用程序执行此操作(事件监视器分析器)时,它给我带来了 panic 的感觉

activity monitor

而在分配工具中它看起来像

allocations

实际内存使用量还不是最糟糕的,一度飙升至大约 90 MB,我不确定如何继续,因为我不 100% 确定如何处理此处给出的信息,除了假设我可能做错了什么,非常错误,而且我还运行了泄漏工具,我有一些,但它们很小,它们都是以字节为单位的。

有人能解释一下吗?或者至少能够澄清我可能在看什么? 实际内存使用事件字节总字节之间有什么区别?此外,这些结果是通过执行完全相同的操作一次而获得的,然后在最后向您显示。

我一直在尝试减少 ARC 转换前的实际内存使用量,我经常遇到内存警告和无声崩溃,转换后我没有再次遇到这些问题,但我没有进行任何长时间的测试,因为我无法想象即使在实际内存使用情况看起来像这样的情况下尝试。实际上看起来比 ARC 之前高很多...尽管实时字节在 ARC 后看起来确实更低...疯狂!

最佳答案

让我困惑了一段时间的是 ARC - 尽管它很美妙 - 并不一定避免对 @autoreleasepool 的需要。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html

我在应用程序中运行了非常大的内存使用量,直到有人提出建议:

@autoreleasepool {

// lots of allocating of objects returned from methods then discarded

} // and the closing brace of the autoreleasepool block causes their memory to be recovered here

也许这会对你有帮助。

对探查器中各列含义的一个很好的解释是 Instruments ObjectAlloc: Explanation of Live Bytes & Overall Bytes

关于iOS 内存病疯狂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13816541/

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