我最近升级到了Snow Leopard,从那以后我很难运行Instrument来从Xcode中检测我的应用程序."录制"按钮将显示为灰色,并且没有任何反应.在Xcode的控制台中没有消息告诉我什么是错的.我曾经能够将它附加到处理或从仪器启动过程,所有这些都不再有效.
知道是什么导致了这个吗?
我花了一些时间来调试ARC和自定义dealloc函数的一个奇怪的问题.
NSOperation类的DataRequestDataRequest保持对我生成的操作的唯一引用,并在操作完成块中销毁.它总是被破坏(它dealloc总是被执行)dealloc.我只有一个NSLog调用.......问题是:
如果我在调试器中运行它,dealloc中的断点永远不会被命中,日志消息永远不会出现.主要是我以为操作漏了.
如果我在仪器中运行它,一切都很好,系统控制台打印消息,Allocations仪器报告从正确的堆栈快照中释放的操作,包括自定义dealloc.没有检测到泄漏.
我100%确定我使用相同的编译器设置进行调试和分析.
最后最令人困惑的事情:如果我创建了一个自定义版本[DataRequest dealloc]并且我付诸实践self.operation = nil;- 即使从调试器中也可以正常工作.
有没有人提示某些编译器链接器选项试图看到一些区别?这可能是Apple工具中的错误(我们所有人都在为我们自己的错误指责一条大鱼,对吧?)
......是的,我尝试过使用GDB和LLDB.结果是一样的 - 可能表明什么.
我试图创建一个简约的样本,但它只是工作(确实);)
谢谢
有一段时间了,我一直在尝试研究如何从Jenkins运行UIAutomation测试 - 每次运行构建时,它都构建良好,然后运行我的仪器命令(使用与此处详细相同的命令(可以使用仪器)使用命令行?)和jenkins只是挂起,整个机器都可以,当我查看活动监视器时,我可以看到使用2GB内存的仪器进程.
当我设置jenkins时,我原来是从一个隐藏的用户那里运行它 - 这提出了一些挑战,jenkins是一个deamon而无法访问窗口服务器.然后我决定将jenkins帐户更改为普通用户,登录并从命令行运行工具 - 这工作正常..但仍然没有运气从jenkins运行它.
我已经将jenkins帐户设置为开发人员 - 尽管没有管理员
请告诉我,如果还有其他任何我可以尝试的,或者如果有人有这个成功运行你的指导将非常感谢 - 谢谢
我在设备上调试应用程序.它完美地工作了一段时间,然后停止并显示错误消息"App因内存压力而终止".没有错误或崩溃日志.
为什么会这样?我该如何解决这个问题?我的应用程序在运行时使用10到30 mb ram.那是很多吗?
更新:使用乐器后,我得到了这个..任何人都可以解释内存分配????
![![]](https://i.stack.imgur.com/ONdl0.png)
更新:我试过仪器,发现泄漏.我有一些这样的事情

我不明白它是什么意思,以及如何解决这个问题????
在xcode 6.1.1中运行良好的代码现在无法在xcode 6.2中启动iOS 7.1模拟器(但适用于iOS 8.2 sim).
这是我正在使用的命令:
仪器-t Automation -w/Users/USER/Library/Developer/CoreSimulator/Devices/233D1DE0-8660-4D98-8E45-5E0794CF7366/Users/USER/Library/Developer/CoreSimulator/Devices/233D1DE0-8660-4D98-8E45-5E0794CF7366 /data/Applications/APPNAME/APPNAME.app -v -l 20
这是返回的错误:
仪器[2274:66214] - [UIAInstrument(UIAInstrument_Simulator)_startAgentForApp:withPID:]:警告:自动化仪器找不到sim工具.
该命令启动模拟器并简要显示应用程序的启动画面,然后转储.
有任何想法吗?
我的应用程序在具有0.5GB内存的设备上崩溃.但是,在Xcode中分析内存使用情况 - 它很少超过140MB.我用过仪器来检查泄漏,没有一个是重要的.
但是,当我运行我的应用程序时,"其他进程"使用的内存总是非常高.这是发射后的休息状态:
我在代码的循环的每个循环中添加了1秒的延迟,并发现在每个循环中,"其他进程"每个对象增加大约3MB的内存使用量,直到在0.5GB设备上,它耗尽并崩溃.
这个问题表明这些是使用该内存的其他应用程序,但我关闭了所有其他应用程序,其用法与我的循环代码直接相关.
什么可以在其他进程中使用内存,实际上是在我的应用程序中运行?为什么我的"其他进程"耗尽了这么多内存?
为了了解我正在做什么,我从Parse中提取数据,然后遍历返回的每个对象并从数据中创建SKNode子类对象.我将此节点添加到数组(供参考)和场景.这是我在主线程上做的代码,添加了延迟.NB线:
self drawRelationships:[_batches objectAtIndex:_index] forMini:_playerMini];
Run Code Online (Sandbox Code Playgroud)
是一个BFTask,所以异步.而且我将数组分成更小的批次,因此我可以看到增量内存使用量,因为每个批次都被绘制.如果我试图立刻绘制整个批次,OOM会立即发生......
- (void)drawNewRelationships
{
_batches = [NSMutableArray array];
_index = 0;
[_playerMini fetchInBackgroundWithBlock:^(PFObject *object, NSError *error) {
[ParseQuery getNewRelationshipsForMini:_playerMini current:_miniRows.relationshipIds withBlock:^(NSMutableArray *newRelationships) {
_batches = [self batchArrays:3 fromArray:newRelationships];
_index = 0;
[self drawBatches];
}];
}];
}
- (void)drawBatches
{
if ([_batches objectAtIndex:_index]) {
[self drawRelationships:[_batches objectAtIndex:_index] forMini:_playerMini];
_index++;
if (_index < [_batches count]) {
[self performSelector:@selector(drawBatches) withObject:nil afterDelay:1];
}
}
}
Run Code Online (Sandbox Code Playgroud)
该节点包含其他数据(几个数组,自定义对象),我尝试运行应用程序并删除所有数据.我试过在主线程和后台线程上运行.我尝试过使用BFTask来异步处理事情.我尝试的所有内容都以相同的行为结束 - 创建这些SKNode对象会在"其他进程"中占用内存,直到在低内存设备上崩溃.
值得注意的是,这种行为自iOS9以来才开始发生.
基本上,什么可以在"其他过程"中使用所有这些内存,我如何释放它?
更新 …
memory-management instruments parse-platform sprite-kit ios9
我只是在玩泄漏并试图故意创造一个.所以,即使做这样的事情也很愚蠢:
class LeakingObjectA{
var strongRefToB:LeakingObjectB?
deinit{ print("LeakingObjectA deinit")}
}
class LeakingObjectB{
var strongRefToA:LeakingObjectA?
deinit{ print("LeakingObjectB deinit")}
}
Run Code Online (Sandbox Code Playgroud)
这对于科学目的来说很好,这创造了一个强大的参考周期.
现在didMoveToView我在内部声明局部常量并像这样发生泄漏:
override func didMoveToView(view: SKView) {
let a = LeakingObjectA()
let b = LeakingObjectB()
a.strongRefToB = b
b.strongRefToA = a
}
Run Code Online (Sandbox Code Playgroud)
另一个场景转换后,现场的deinit正确调用,但是deinits从a和b实例并不实际调用.
另外我说泄漏,因为这实际上是在仪器中检测到泄漏:
现在,如果我将这两个本地变量声明为场景的属性,则仪器检测到泄漏之间存在差异:
class GameScene:SKScene {
let a = LeakingObjectA()
let b = LeakingObjectB()
//...later in didMoveToView method I make a strong reference cycle like from the …Run Code Online (Sandbox Code Playgroud) 我在一个创建多个 JSContext 的框架上工作。我已经通过覆盖维护对它们的引用的类中的“dealloc”方法来确认它们正在被释放。我还使用 Instruments 中的 Allocations 工具分析了我的应用程序,并确认在整个应用程序的生命周期中没有反复出现的内存堆栈。然而,这些 JSContext 的内存使用目前是一个争论点。
我基本上是想确认一些事情:
提前感谢您的任何见解。
在新的,从零开始的单视图iOS应用程序上使用泄漏仪器工具会报告23次泄漏。这似乎不正确-我错过了什么吗?重复运行会产生不同的泄漏计数,从16到35。重现步骤遵循此屏幕截图。
亚马逊样本ios应用程序登录时在内存泄漏中发布了一个类似的未解决问题
我正在使用Xcode 10.2.1(10E1001); iOS 12.2(无论是否激活“显示”功能,模拟器和设备都显示泄漏)。
但是,除Instruments之外,Debug Navigator不赞成:
我正在尝试在 Instruments v12.2 中检查我的应用程序是否存在内存泄漏。但是,我看到一个警告Symbols for system libraries are available for "iPhone 12(14.2)"。
我曾尝试使用不同的模拟器对其进行测试,但得到相同的警告,即使我在代码中明确添加了泄漏,也未显示任何泄漏。
我添加了一张图片以供参考。
instruments ×10
ios ×6
xcode ×5
memory-leaks ×4
sprite-kit ×2
dealloc ×1
debugging ×1
heap-memory ×1
ios7 ×1
ios9 ×1
jenkins ×1
memory ×1
swift ×1