iPhone内存泄漏

我知道有些内存泄​​漏没有什么大不了的,或者是在开发人员的控制之外,因为它们在sdk本身,但是我看到的是iPhone 4与iOS SDK 4.2构build的32KB。 我还没有能够触发3GS的这一点。 它发生在响应用户交互(响应打开照片库,并且泄漏似乎发生在我在照片库中时),因此它可以快速build立起来。

以下是我在iPhone 4上看到的堆栈跟踪:

0 libSystem.B.dylib calloc 1 0x317e8363 2 0x317e9c41 3 0x318273ff 4 0x31827ea5 5 0x302ea49d 6 0x302ebe07 7 0x302eb7c3 8 0x302ebcab 9 0x303304cd 10 UIKit -[UINavigationController _startTransition:fromViewController:toViewController:] 11 UIKit -[UINavigationController _startDeferredTransitionIfNeeded] 12 UIKit -[UINavigationController viewWillLayoutSubviews] 13 UIKit -[UILayoutContainerView layoutSubviews] 14 UIKit -[UIView(CALayerDelegate) layoutSublayersOfLayer:] 15 CoreFoundation -[NSObject(NSObject) performSelector:withObject:] 16 QuartzCore -[CALayer layoutSublayers] 17 QuartzCore CALayerLayoutIfNeeded 18 QuartzCore CA::Context::commit_transaction(CA::Transaction*) 19 QuartzCore CA::Transaction::commit() 20 QuartzCore CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) 21 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ 22 CoreFoundation __CFRunLoopDoObservers 23 CoreFoundation __CFRunLoopRun 24 CoreFoundation CFRunLoopRunSpecific 25 CoreFoundation CFRunLoopRunInMode 26 GraphicsServices GSEventRunModal 27 GraphicsServices GSEventRun 28 UIKit -[UIApplication _run] 29 UIKit UIApplicationMain 30 MyApp main /Users/david/src/MyApp/main.m:14 31 MyApp start 

我在这里的任何地方都看不到我的代码,我不知道该如何检查带有地址的符号。 有任何想法吗? 这可能与我添加的子层有关吗? (这是我在这里看到的唯一可以控制的东西。)

谢谢你的帮助。

编辑:由于GojaN的问题指出(谢谢,GojaN),我完全忘了提及,这是显示在仪器中:

 Leaked Object # Address Size Responsible Library Responsible Frame GeneralBlock-36864 0x4ff3000 36864 UIKit -[UINavigationController _startTransition:fromViewController:toViewController:] 

你知道这是泄漏吗? 这很有可能是一个caching。 (半相关:我看到的内存在我的PDF查看应用程序中不断增长,看起来像一个泄漏,但显然caching每一页,当我closuresPDF文档,他们都走了)。

泄漏通常发生在模拟器以及设备中,是否发生在那里?

这是在运行循环中运行的代码,但可能由您的代码启动。 那么每次你运行你的代码时,这个块会被泄漏吗?

您应该从Xcode“Build”菜单中查看“Build and Analyze”选项。它会从编译时间的angular度向您显示代码可能泄漏的位置。

不久之后,我的手机开始performance得非常奇怪。 我删除了我的应用程序,重新安装了它,并没有能够得到这个再次发生。 由于之前相当一致,易于重现,所以我不得不把它logging下来。

感谢那些提供build议的人。