iPad/iPhone有趣的记忆观察

iPad/iPhone有趣的记忆观察,iphone,objective-c,ipad,Iphone,Objective C,Ipad,我有一个相当大的iPad应用程序,当我在xcode调试模式下运行该应用程序时,它在活动监视器中显示大约50MB,内存增长缓慢。(大约每30秒0.1 MB)但是当我直接从模拟器(已经安装在模拟器中)运行应用程序时,它显示活动监视器中大约有10 MB,内存没有增长。(它的常数)。我已经检查了仪器的性能,没有泄漏 是否有人知道为上述两种场景显示不同内存详细信息的原因,以及哪一种是正确的? 还有一种方法可以通过编程方式在控制台中打印应用程序消耗的内存吗?活动监视器通常是跟踪内存增长的无用方法。RPRVT

我有一个相当大的iPad应用程序,当我在xcode调试模式下运行该应用程序时,它在活动监视器中显示大约50MB,内存增长缓慢。(大约每30秒0.1 MB)但是当我直接从模拟器(已经安装在模拟器中)运行应用程序时,它显示活动监视器中大约有10 MB,内存没有增长。(它的常数)。我已经检查了仪器的性能,没有泄漏

是否有人知道为上述两种场景显示不同内存详细信息的原因,以及哪一种是正确的?


还有一种方法可以通过编程方式在控制台中打印应用程序消耗的内存吗?

活动监视器通常是跟踪内存增长的无用方法。RPRVT大约有无数不同的贡献者,其中一些完全是非直觉的。活动监视器当然可以用来计算“呃,哦,它正在增长”,但除此之外就没什么了

使用仪器跟踪内存增长

当您说“在调试模式下运行”时,是否配置了僵尸跟踪或分配信息跟踪之类的配置?这将有助于记忆的增长

除此之外,分配工具通常会向您展示哪些因素有助于增长

还有没有办法通过编程方式打印控制台中应用程序消耗的内存?

像这样的绝对数不是很有用。一个应用程序正在增长是不好的,但一个原始数字不能告诉你为什么它比活动监视器更有用


使用仪器.)

活动监视器通常是跟踪内存增长的无用方法。RPRVT大约有无数不同的贡献者,其中一些完全是非直觉的。活动监视器当然可以用来计算“呃,哦,它正在增长”,但除此之外就没什么了

使用仪器跟踪内存增长

当您说“在调试模式下运行”时,是否配置了僵尸跟踪或分配信息跟踪之类的配置?这将有助于记忆的增长

除此之外,分配工具通常会向您展示哪些因素有助于增长

还有没有办法通过编程方式打印控制台中应用程序消耗的内存?

像这样的绝对数不是很有用。一个应用程序正在增长是不好的,但一个原始数字不能告诉你为什么它比活动监视器更有用


使用仪器.)

你好,谢谢你的回复。对我已在我的应用程序中启用NSZombie。我用过仪器。在泄漏中,它没有显示任何泄漏。在分配中,没有大量的分配,很难立即确定是什么促成了增长。有没有办法从一开始就清除所有内存快照并重新捕获?这样,识别新分配的对象而不是从应用程序开始分配的所有对象可能会更容易?NSZombieEnabled将导致对象永远不会被解除分配(除非您将NSDeallocateZombies设置为否)。它可能不会显示为泄漏,因为这是故意的。嗨,bbum和tc,我已经禁用了NSZombieEnabled。现在它工作得很好。谢谢你给我小费。我不知道这件事。再次感谢“除此之外,分配工具通常会向您显示哪些因素对增长有贡献”——如何?当我试着使用它时,它向我展示了一千件小东西,但我不认为其中任何一件是在说‘啊哈!此UIWebView正在分配5GB的内存,这是导致我的内存崩溃的原因1.启用“跟踪实时分配”(或其他名称)。2.运行你的应用程序。3.按字节数列的#排序。这将按照占用内存最多的类型进行排序。嗨,谢谢你的回复。对我已在我的应用程序中启用NSZombie。我用过仪器。在泄漏中,它没有显示任何泄漏。在分配中,没有大量的分配,很难立即确定是什么促成了增长。有没有办法从一开始就清除所有内存快照并重新捕获?这样,识别新分配的对象而不是从应用程序开始分配的所有对象可能会更容易?NSZombieEnabled将导致对象永远不会被解除分配(除非您将NSDeallocateZombies设置为否)。它可能不会显示为泄漏,因为这是故意的。嗨,bbum和tc,我已经禁用了NSZombieEnabled。现在它工作得很好。谢谢你给我小费。我不知道这件事。再次感谢“除此之外,分配工具通常会向您显示哪些因素对增长有贡献”——如何?当我试着使用它时,它向我展示了一千件小东西,但我不认为其中任何一件是在说‘啊哈!此UIWebView正在分配5GB的内存,这是导致我的内存崩溃的原因1.启用“跟踪实时分配”(或其他名称)。2.运行你的应用程序。3.按字节数列的#排序。这将按照占用内存最多的类型进行排序。这都是在模拟器中完成的吗?你应该避免在模拟器中进行内存调优,因为它提供的结果与在实际设备上运行的结果大不相同。嗨,Brad,你如何在实际设备中测试内存?在设备中运行时,我们从何处获得统计详细信息?提前感谢您的帮助。这都是来自模拟器内部的吗?你应该避免在模拟器中进行内存调优,因为它提供的结果与在实际设备上运行的结果大不相同。嗨,Brad,你如何在实际设备中测试内存?在设备中运行时,我们从何处获得统计详细信息?提前感谢你的帮助。