Obj-C: утечка памяти из Malloc 48 байтов в кадре - PullRequest
20 голосов
/ 27 марта 2012

В моем приложении я получаю несколько утечек памяти. Объект занимает 48 байтов Malloc, и он всегда происходит из команды ответственного вызывающего абонента. История объекта показывает только то, что он является Malloced, и никакие другие не сохраняют и не выпускают. На трассировке стека нет ни одного моего кода. Единственные биты релевантности, которые я могу выделить:

  10 UIKit _UIGestureRecognizerSendActions
   9 UIKit -[UIScrollView handlePan:]
   8 UIKit -[UIScrollView _endPanWithEvent:]
   7 UIKit -[UIScrollView(Static) _startTimer:]
   6 CoreFoundation CFNotificationCenterAddObserver
   5 CoreFoundation _CFXNotificationRegisterObserver
   4 libnotify.dylib notify_register_dispatch
   3 libnotify.dylib notify_register_mach_port
   2 libnotify.dylib token_table_add
   1 libsystem_c.dylib strdup
   0 libsystem_c.dylib malloc

Кажется, что это происходит во время прокрутки в представлении карты, но я не уверен, как поступить, поскольку ни один из моего кода не указан в стеке. Как мне продолжить диагностику этой утечки?

Если требуется дополнительная информация, пожалуйста, дайте мне знать.

С уважением, Ник

Ответы [ 4 ]

11 голосов
/ 27 марта 2012

Если это «только» 48 байтов, все свидетельства указывают на фреймы в системных рамках (т. Е. Распределение никогда не подвергается воздействию вашего кода), и их нет десятков тысяч, тогда я (а) не смог бы не переживаю об этом слишком много, но я бы (б) немедленно подал ошибку через http://bugreport.apple.com/

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

1 голос
/ 03 августа 2012

Я думаю, что я подтвердил, что это было введено в 5.1. Я могу дублировать утечку памяти каждый раз в своем приложении, нажимая кнопку «Домой», когда мое приложение активно с UIScrollView в качестве активного представления с помощью симулятора iPhone 5.1. Тот же тест, запущенный на iPhone Simulator 5.0, не воспроизводит ошибку.

Надеюсь, это поможет

0 голосов
/ 06 декабря 2012

это может быть вызвано executeselectorinbackground, вызвать его внутри блока @autoreleasepool {}

0 голосов
/ 31 августа 2012

Просто чтобы подтвердить, что это действительно повторяющаяся проблема, а не только у вас есть проблема.Я видел, как это происходит в прокрутке таблиц, а также UIScrollView.Я тестировал его на симуляторе, а также профилировал версии релизов на iPad.Кажется, это общая проблема в 5.1, но я еще не слышал об исправлении.И я согласен, 48 байтов на каждом свитке потенциально могут стать проблемой.

...