0

嘿,我有一个问题,我想要一些建议。在手机上泄漏,但不在仿真器上?

我工作的多数民众赞成由以下几个主要部分的文档查看器:

  1. 拉链库,解包文件容器(minizip)
  2. XML库,解析文档(libxml2的)
  3. 在屏幕上呈现文档的UI代码

没有太复杂或花哨的东西。

在模拟器上,一切都很精美;观众按预期执行。我已经通过仪器运行,没有泄漏。 ObjectAlloc报告在查看器的整个生命周期内分配了大约5.5兆字节(这反复打开我的测试文档)。

不幸的是在设备上(iPhone 3G,iOS 3.1.2)的事情并不那么清楚。相当频繁地,重复打开测试文件会导致内存不足错误,并且文件将无法打开。初始文件打开始终有效。尽管模拟器测试突出显示没有泄漏,整体内存占用也不大,但我不得不断言iPhone上确实存在泄漏(因为为什么重复打开会导致内存不足错误)。

我试图在设备上运行仪器,但应用程序在运行中途停下来(?!),所以我实际上没有成功运行泄漏。

我相信有一个重要的泄漏只会出现在设备上。所以,我剩下两个选项(没有特定顺序):

  • 重构我的代码,避免使用zip库。这将消除潜在的泄漏源。耗时且不确定。
  • 重新格式化并重新安装我的手机上的所有东西(也许有什么会导致问题)。非常像上面那样,耗费时间,并且会丢失我的手机数据。也许它会让我跑漏。

正如你所看到的,我到达这里。有什么明显的我失踪了?

在此先感谢你们。

回答

1

也许,你应该尝试在你的设备上运行没有泄漏,但分配仪器,并用它(手动)搜索泄漏?

+(也许这听起来很愚蠢)从设备中删除应用程序,并重复清洁生成运行与泄漏(为什么不?)。


关于手动泄漏搜索。

只需启动分配工具,并在使用您的应用程序时,多次执行所有操作(例如 - 按两次或多次按钮;导​​航到某个面板并返回几次 - 依此类推)。记忆应该只显着增加一次,或者在动作开始时增加,在动作结束时减少(当然,可能存在一些分歧,但应该用少量记忆来反映)。你会在图上看到它。

还可以堆积(在仪器的左侧面板中,选择分配仪器时会出现一个按钮) - 它们将帮助您检测被认为已被销毁的“仍然活着”的物体(会有很多物体,但第一步也是最简单的一步就是检查你自己的类的对象)。

+0

你的意思是“ObjectAlloc”?你是什​​么意思通过手动搜索它们?感谢您的建议! – EightyEight 2010-08-13 04:28:00

+0

嗯,我想是的。但是在我的乐器(在乐器选择菜单中)和我的XCode(主菜单:运行 - >与演奏工具一起运行)中,它被称为“分配”。 而关于手动搜索 - 请参阅我的答案(我编辑它以添加详细信息)。 – kpower 2010-09-01 07:02:15

相关问题