新的空iOS应用程序存在数十个内存泄漏问题。

7

在一个全新的、从零开始的 iOS 应用程序上使用 Leaks Instruments 工具报告了 23 个泄漏。这似乎不对,我错过了什么吗?重复运行会产生不同的泄漏计数,从 16 到 35 不等。请参照此截图进行复现。

类似的未回答的问题发布在 Amazon示例 iOS 应用程序中的内存泄漏

Screenshot of Instruments window

我正在使用Xcode 10.2.1 (10E1001); iOS 12.2 (模拟器和设备都显示泄漏,无论是否激活Reveal。)
步骤如下:
1.创建一个新的单视图iOS应用程序。
2.在Scheme> Run / Debug部分中启用
* 内存管理> Malloc Scribble * 日志记录> Malloc Stack(仅限实时分配)
3.运行产品>配置文件(⌘I)
4.第一个泄漏检查是绿色的; 等待第二个。
5.有23个新泄漏!(如上所示。)
然而,除了Instruments之外,Debug Navigator不同意:
6.运行正常的调试会话
7.在Debug区域顶部单击“Debug Memory Graph”。
8.Debug Navigator(下方)没有紫色感叹号(泄漏警报)。

Screenshot of Debug Navigator


1
你看过泄漏的对象吗?我相信标准框架中有多个小泄漏,也许其中一些实际上并不是泄漏。泄漏检测并不那么简单。 - Sulthan
我之前提到设备也显示泄漏(上次检查时有58个!)。"Responsible Library"列仅列出Foundation和UIKitCore。我已经导出了memgraph并使用了heapmalloc_historyleaks,但仍然有点困惑。 - Andrew Duncan
感谢您发帖。我也用一个空项目做了同样的事情,我的项目名叫MemoryLeaks。我得到了相同的结果。在我们的项目中试图消除所有泄漏之前,知道这一点是很好的。 - 23inhouse
是的,特别是当在线视频演示显示小绿色勾号在屏幕上移动时。你会想知道“他们是怎么做到的?”人们担心忽略红色勾号就像要求另一个切尔诺贝利一样... - Andrew Duncan
1个回答

4

Xcode 10.3 的发布说明中提到:

已解决在 iOS 12.2 或更高版本下使用泄漏检测工具时,首次运行后每次进行泄漏检测都会出现随机数量的误报泄漏问题

这听起来就像是这个问题。所以这是一个 bug(Heisenbug?),现在已经被修复了。


已验证。这是一个相当严重的错误,使得一个重要的工具无法使用。感谢Matt! - Andrew Duncan
很抱歉你不得不忍受这个错误,但是你描述得非常好,让我一下子就认出它与发布说明中的句子相似。顺便提一下,总会有各种各样的误报泄漏错误,只是这个特别严重。 - matt
我已经试了好几个小时了,谢天谢地看到了这篇帖子! - Kevin Shiflett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接