我在应用程序中诊断出一个奇怪的行为:大约10分钟后,CPU使用率达到100%.应用程序中没有泄漏,它发生在应用程序什么都不做的时候.
我可以使用"Time Profiler"对仪器进行分析,但是有没有办法找到实际原因是什么?
安装Xcode5软件包时出现问题.我正在使用小牛队 - 不确定这是否相关.
无法在模拟器中分配分配.仪器将在模拟器中加载并启动应用程序但不是分配日志,我看到:

有没有人面对这个问题?
当我从Xcode运行我的应用程序时,很明显我有内存泄漏:
当我呈现一个自定义的ViewController时,内存会增加,但是当我解除它时,它不会再回落.
所以我也使用了仪器的分配工具进行了检查,但这说明了一个不同的故事:
正如您所看到的,当我呈现ViewController时,Instruments会显示尖峰,但是当它被解除时,内存使用量会回落到之前的水平.
我已经检查了我的代码至少15次,我个人找不到任何内存泄漏,因此同意仪器.我还在deinit我的所有对象中实现了这样的函数,如下所示:
deinit {
print("Deinnited \(id)")
}
Run Code Online (Sandbox Code Playgroud)
并且所有对象都按预期打印到控制台.
会发生什么事?我在用:
Run和Profile的模式都在"debug"中
在我的iOS项目中,我已将其设置Generate Debug Symbols为Yes,但.dYSM文件未在DerivedData文件夹中创建.我在我的iPhone上运行这个应用程序.因为我需要它来映射它来做时间分析器,因为时间分析器显示十六进制地址中的所有符号.必须象征性地确定完成任务的时间.
提前致谢.
我有一个自助服务终端应用程序,它实际上显示了一堆幻灯片,上面有各种信息.我最初在一年前开始编写代码,当时我开始使用Objective-C和iOS开发.我发现我的代码风格现在比它更清晰,而且我更有经验,所以我决定从头开始重写.
我使用Allocations工具运行我的应用程序,以查看内存使用情况.考虑到这是一个自助服务终端应用程序,一切都需要顺利运行,没有泄漏.(当然所有应用程序都需要在没有泄漏的情况下运行,但是一个自助服务终端应用程序使这个目标变得更加重要.)我看到了一些有趣的结果,所以我也运行了旧版本的代码.
运行旧版本的代码,我看到甚至运行大约1.15兆字节的内存使用量.似乎所有东西都必要时进行分配和解除分配.然而,在我的新实现中,我看到了一些不同的东西.内存使用率一直在小幅上升,然后最终似乎达到了大约1.47兆字节的使用率.以下是运行超过10小时后新分配报告的样子:

我担心的原因有几个.
旧项目和新项目之间存在几个显着差异.
旧版本使用Plists作为后备存储(我手动读取和写入plist文件.)新项目使用Core Data.
新项目实现了一个库,该库在旧项目没有的每个"幻灯片"上调用.我会更关心这个库,除了我写它并且我经历了它以确保我发布了所有内容并且只在手动发布不可能的地方自动释放.
这两个类都使用工厂类来创建幻灯片.在旧项目中,工厂类是单身人士.我认为将它变成普通的类可以帮助解决内存问题,因为单例从未发布过.(因此它的 属性没有被释放.在新项目中,工厂类正在被释放,所以我不确定为什么它仍然占用所有内存(如果这是导致问题的原因).
旧项目在各个地方使用字符串常量.新代码使用了大量枚举来实现相同的功能.(新代码通常使用更多常量.)
如何追踪内存峰值?当应用程序丢弃它正在使用的内容时,内存全部被应用程序清理,但在应用程序终止之前它似乎没有丢弃内容.
如果有人帮我指出正确的方向,我将不胜感激.
编辑:
它看起来像调峰正在通过调用引起KosherCocoa库.如果有人会介意看看它并告诉我在内存管理方面我做错了什么,我真的很感激.
memory-management objective-c instruments memory-profiling ios
仪器可以用图形有趣的方式显示ARC下的保留周期.我还记得几天前我偶然发现仪器中的"Cycles"视图.
现在我开始使用ARC,突然间我再也找不到了.Allocations和VM Tracker仪器不提供它,也不提供Leaks仪器.
为了看到保留周期,我该怎么做?
找到截图作为证据:

xcode memory-management instruments ios automatic-ref-counting
我正在使用仪器检查我的应用程序是否泄漏,我正在尝试学习如何读取泄漏周期数据.我在我的一个漏洞上得到了这个图:

图表是什么意思?什么意思"没有ivar"?
谢谢
沙尼
我的应用程序正在使用位置服务,并且对于自动化测试,我希望能够忽略"APP想要使用您当前位置"弹出窗口.但是,当我尝试在带有UIAutomation脚本的Instruments中执行此操作时,我收到此错误:
Fail: Could not start script, target application is not frontmost.
Run Code Online (Sandbox Code Playgroud)
这种意义是有道理的,因为警报是由不同的过程产生的.但是,Apple在这种情况下帮助人们自动化测试的计划是什么?
我在Blank.app中从空白模板创建了一个分析配置文件,我想用它来分析一个命令行程序.问题是程序退出的速度相当快(在几秒钟内),这意味着我不能简单地在仪器进程下拉列表中选择它以在它运行时附加到它.
有没有办法在启动命令行应用程序时使用现有的仪器配置文件,并立即开始收集数据,而不是附加到正在运行的进程?
我没有Xcode项目,甚至没有源代码.我只想在启动后立即附加到现有应用程序.如果它是相关的我在OS X Yosemite上使用Instruments 6.1.
如果有办法以某种方式直接从命令行开始分析,而不是从Instruments GUI开始分析,那会更好,但我不确定这样的事情是否可行.
你能帮助我把我的崩溃象征化吗?
在Xcode 7.3,Window - > Organizer - > Crashes中,我有来自最新TestFlight版本的崩溃报告.它们是在这台Mac上构建的,所有带有相应dSYM的档案都在Archives选项卡中.该应用程序分为许多框架和主要应用程序,许多是Swift和Objective C的混合.在崩溃日志中,我可以看到正确列出的框架和应用程序的名称,但我的框架的所有条目和应用程序是十六进制.UIKit的象征很好.
当我查看iTunes Connect时,它对"包含符号"说"是"并允许我下载dSYM.构建时,"调试信息格式"选项设置为"DWARF with dSYM".我尝试将"在复制期间调试符号"和"剥离链接产品"设置为"否"以查看是否有所作为.它没有.
我在我的系统上找不到symbolicatecrash应用程序,甚至在/ usr/bin或/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash中找不到,但我有一个旧的Xcode 5我在哪里可以抓住它.但是,它不再解析符号.
我在仪器中遇到同样的问题,如果我描述我的应用程序,UIKit象征性很好,但我的框架和应用程序只显示十六进制.
我知道有很多关于这方面的帖子,但是我已经从7.3 beta期间经历了很多,直到现在还没有找到解决方案
instruments ×10
ios ×8
xcode ×4
memory-leaks ×2
profiling ×2
dsym ×1
macos ×1
monitoring ×1
objective-c ×1
performance ×1
swift ×1
symbolicate ×1
xcode7 ×1