Периодические утечки памяти - PullRequest
0 голосов
/ 03 февраля 2010

Я тестирую конкретный вариант использования на предмет утечек. Иногда я получаю утечки, а иногда нет, даже если я прохожу один и тот же сценарий использования. Можете ли вы предложить, из-за системных рамок или из-за моего кода?

Я зарегистрировал свой код, и все выглядит идеально без каких-либо невыпущенных объектов. Можете ли вы предложить решение?

Спасибо

Ответы [ 2 ]

1 голос
/ 03 февраля 2010

Это крайне маловероятно, чтобы быть основой. Не забывайте, что есть сотни (тысячи?) Разработчиков, использующих его, так что шансы, что кто-то не заметит ошибку, будут намного меньше, чем код, который был проверен только вами.

0 голосов
/ 03 февраля 2010

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

См. Как избежать, найти и удалить утечки памяти в Какао , чтобы узнать, как отследить утечки памяти.

Edit01:

Тебе это может сойти с рук, но я бы не советовал. Если это произойдет, пока Apple его тестирует, у вас есть все шансы быть отвергнутым.

Что касается качества, то это зависит от того, насколько сильны утечки и как долго они могут продолжаться при использовании в реальном мире. Каждое приложение, вероятно, пропускает несколько байтов здесь и там. (Например, в некоторых средах есть известные утечки.) Если утечки очень малы, они не вызовут проблем, особенно в приложении, которое работает только в течение короткого времени. Однако, если утечки больше или приложение рассчитано на долгое время, то утечки в конечном итоге приведут к падению приложения.

Например, предположим, у вас есть такая программа, как приложение погоды. Что касается качества, это не имеет значения, если оно немного просочится, потому что приложение погоды используется быстро. Люди открывают это, смотрят на погоду и затем закрывают это. Утечки не успевают к накоплению. С другой стороны, если у вас есть приложение, такое как веб-браузер или электронная книга, которые люди оставляют открытыми в течение длительного времени, утечки могут накапливаться и приводить к падению приложения.

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

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

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