утечка памяти iPhone (много выделений) - PullRequest
0 голосов
/ 23 июля 2010

Я проверил свое приложение в инструментах. Утечек не обнаружено, но приложение вылетает (не сразу - через ~ 20 минут [зависит от активности пользователя] от работы). Я просмотрел распределение. Сообщает:

Category | Live Bytes | Count Live | # Living | # Transitory | Overall Bytes | # Allocations (Net / Overall)
Malloc 16 Bytes | 235088 | 14693 | 0 | 235088 | 14693 | 1.00

Все записи (когда я просматриваю подробную информацию для "Malloc 16 Bytes") сделаны только для одного объекта:

# | Object Address | Category | Creation Time | Live | Size | Responsible Library | Responsible Caller
0 | 0x104b50 | 817461248 | • | dyld | _dyld_start

(... и 14693 записей с одинаковыми полями данных, кроме, конечно, #).

Трассировка стека:

   0 CoreFoundation __CFAllocatorSystemAllocate
   1 CoreFoundation CFAllocatorAllocate
   2 CoreFoundation __CFGetConverter
   3 CoreFoundation CFStringEncodingGetConverter
   4 CoreFoundation CFStringGetSystemEncoding
   5 CoreFoundation __CFStringInitializeSystemEncoding
   6 CoreFoundation __CFInitialize
   7 dyld ImageLoaderMachO::doImageInit(ImageLoader::LinkContext const&)
   8 dyld ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&)
   9 dyld ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&)
  10 dyld ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&)
  11 dyld ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&)
  12 dyld dyld::initializeMainExecutable()
  13 dyld dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**)
  14 dyld dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*)
  15 dyld _dyld_start

Я не могу вставить весь код здесь (приложение состоит из нескольких строк). Но, пожалуйста, дайте мне совет - где искать утечку памяти или что-то в этом роде. еще ...

1 Ответ

1 голос
/ 23 июля 2010

ИМХО, ваш приоритет номер один - запустить приложение.Попытайтесь определить местонахождение проблемы, комментируя часть вашего кода;если приложение больше не падает, то проблема находится в той части, которую вы только что прокомментировали, если она все еще падает, то она должна быть где-то еще.Повторяйте эти шаги, пока не исправите ошибку.

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

...