Что означает этот Heapshot? - PullRequest
0 голосов
/ 25 июля 2011

Я делал кучу снимков определенного процесса.Все просочившиеся объекты на всех снимках происходят с помощью этого метода:

- (void)setArticle:(Article *)article
{
    if (_article != article)
    {
        [self.navigationController popToViewController:self animated:YES];

        [_article removeObserver:self forKeyPath:kArticleObservationKey];
        [_article release];
        _article = [article retain];

        [_article addObserver:self forKeyPath:kArticleObservationKey options:NSKeyValueObservingOptionNew context:&__ArticleObservingContext];

        [_article loadIfNeededWithPriority:OGRequestPriorityHigh downloadAllImage:NO];
        [_article fetchRelatedStories];
    }

    [self resetArticleView]; // 65% of heapshot allocations

    if ([_article.isStub boolValue])
    {
        [self.view showSpinner];
    }

    if (_article)
    {
        [Analytics articleReadWithParmeters:[NSDictionary dictionaryWithObject:_article.idOnServer forKey:AnalyticsKeyArticleId]]; // 32% of heapshot allocations
    }
}

Вот фактический heapshot, все они выглядят так же:У меня есть несколько вопросов:

  1. Каковы мои следующие шаги?Я не вижу никаких утечек в этом методе, почему он так заметно выделяется на снимках кучи?
  2. У [self resetArticleView] есть немного 65%, но этот конкретный метод не обнаруживается ни в одномскладывать следы для моих утечек.Я неправильно понимаю, что означает это конкретное 65% обозначение?Если это означает, что он содержит 65% утечек ресурсов, почему этот метод не находится ни в одной трассировке стека?

1 Ответ

3 голосов
/ 26 июля 2011

Включите сохранение отслеживания событий в инструменте распределения и посмотрите, что удерживает объекты ...

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

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

(я не уверен, на какой% вы ссылаетесь - получил скриншот этого?)

...