无法跟踪内存问题

Posted

技术标签:

【中文标题】无法跟踪内存问题【英文标题】:Unable to track memory issue 【发布时间】:2017-04-18 05:11:19 【问题描述】:

我在内存泄漏跟踪方面遇到问题,我确实尝试过分析,但仪器将 firapb_decode_repeated_user_attribute as 显示为负责任的对象。当我尝试跟踪代码时,我会遇到更痛苦的汇编代码。有没有人有类似的问题或有一些线索来跟踪这个问题,这对我来说会很多。

Leaked Object # Address Size Responsible Library Responsible Frame Malloc 32 Bytes 1 0x600000231ba0 32 Bytes appName firapb_decode_repeated_user_attribute

汇编代码

【问题讨论】:

请停止添加不当标签。请阅读 Apple 标签的说明。 我认为该标签与此问题有关,也可能与 sdk 相关。 @dip 不,阅读 Apple 标签的描述:“请勿使用此标签!!!Apple 是制造 Mac 和 ios 设备的公司。使用与操作系统和设备/计算机更相关的标签你的目标是。”。所以瞄准iOS。此外,您的问题似乎与 FireBase 或您的实现有关。你检查过 FireBase (FIRA...Stuff) 吗? 好的,是的,我怀疑是 firebase,但 FIRA 只是试图将 firebase 与此问题联系起来的词,我现在将在此处标记 firebase,顺便说一句。 你在上面找到什么了吗?我也有一些与firapb_decode_repeated_user_attributefirapb_decode_repeated_setting 的泄漏...我似乎与Firebase 一起来的,仅此而已... 【参考方案1】:

是的,正如 Larme 所说,是 Firebase 泄漏了内存。

我仍然不知道确切原因(代码行),但从 firebase plist禁用 firebase 应用分析解决了问题,

即使您没有在 GoogleService-Info.plist 上设置 IS_ANALYTICS_ENABLED = NO 使用 Firebase 应用分析。 fire base SDK 似乎默认执行应用程序分析代码。

解决方案:- 在 GoogleService-Info.plist 上添加 FIREBASE_ANALYTICS_COLLECTION_ENABLED = NO,消除泄漏问题。

这只是我的看法和观察,这个话题可能需要更多的信息和补偿。

【讨论】:

【参考方案2】:

如果您想找到发生泄漏的代码区域,请切换到调用树视图。跳转栏位于您的第一个屏幕截图的顶部。点击跳转栏中的 Leaks 项,选择 Call Tree 切换到调用树视图。

当您在调用树视图中时,选中“反转调用树”和“隐藏系统库”复选框将使您更容易在调用树视图中找到您的代码。从 Xcode 8.3 开始,复选框位于一个弹出窗口中,您可以通过单击窗口底部的 Call Tree 按钮打开它。

早期的 Instruments 版本有一个显示设置部分,其中包含一个调用树复选框集合。

【讨论】:

谢谢,我会尝试反转调用树。

以上是关于无法跟踪内存问题的主要内容,如果未能解决你的问题,请参考以下文章

跟踪内存泄漏

ios-coredata:内存跟踪和完全持久跟踪有啥区别?

gdb可以跟踪内存分配日志

了解 LeakCanary 内存泄漏堆栈跟踪

如何准确跟踪内存使用情况?

跟踪 java profiler 中的最大内存使用量