утечка памяти iPhone - PullRequest
       1

утечка памяти iPhone

1 голос
/ 11 декабря 2010

Я знаю, что есть утечки памяти, которые не имеют большого значения или находятся вне контроля отдельного разработчика, поскольку они находятся в самом SDK, но я вижу, что 32KB в сборке iPhone 4 против iOS SDK 4.2. Я не смог вызвать это на 3GS. Это происходит в ответ на взаимодействие с пользователем (в ответ на открытие библиотеки фотографий, и утечка, кажется, происходит, когда я в библиотеке фотографий), поэтому она может быстро накапливаться.

Вот след стека, который я вижу на 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:]

Ответы [ 3 ]

1 голос
/ 15 декабря 2010

Вы должны заглянуть в опцию «Построить и проанализировать» из меню «Построить» XCode. Она покажет вам, где может просочиться ваш код, с точки зрения времени компиляции.

1 голос
/ 15 декабря 2010

Знаете ли вы, что это утечка?Вполне возможно, что это кеш.(Полу-связанный: я видел, как память продолжала расти в моем приложении для просмотра PDF, которое выглядело как утечка. Но оно, очевидно, кэшировало каждую страницу, и все они исчезли, когда я закрыл документ PDF.)обычно это происходит в симуляторе так же, как и на устройстве, это происходит там?

Это код, выполняемый в цикле выполнения, но, вероятно, инициированный вашим кодом.Итак, этот блок пропускает каждый раз, когда вы запускаете свой код?

0 голосов
/ 24 декабря 2010

Вскоре после этого мой телефон начал работать очень странно. Я удалил свое приложение, переустановил его и больше не мог этого добиться. Поскольку раньше он был довольно последовательным и его легко воспроизвести, мне придется записать его на мельком до чистого выигрыша.

Спасибо тем, кто предложил совет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...