Попытка решить некоторые утечки для игры iPad - PullRequest
0 голосов
/ 20 декабря 2011

У меня небольшая проблема, когда пользователь играет в мою игру более 20 минут или около того, она начинает значительно замедляться.Однако в последнее время я довольно тяжело пытался решить проблемы, но все же не повезло.Я попробовал инструмент утечки, и теперь у меня есть квадрат, но я читал в «блоге bbum» об использовании инструмента Allocations и съемке кучи.Но я не совсем понимаю, на что я смотрю, кто-нибудь может мне помочь с этим?

В моей игре пользователи выбирают слова.После каждого слова я сделал кучу снимков, но не совсем уверен, как именно это прочитать.Является ли столбец «Рост кучи» тем, что выполняется в данный момент, или он был добавлен к тому, что выполняется в данный момент?

И что такое # Persistent?

Кроме того, почему # Persistent прыгает так много?Может ли это быть моей проблемой с памятью?

enter image description here

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 21 декабря 2011

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

0 голосов
/ 20 декабря 2011

Столбец роста кучи представляет все выделения в этой итерации, которые не существовали до этой итерации, но продолжают существовать во всех последующих итерациях .

Т.е. в Heapshot 4 отображается 10.27Постоянное увеличение размера вашей кучи в КБ.

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

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

Я написал значительно больше об этом в сообщении в блоге .

Если он замедляется, почему бы не попробовать вместо этого профилирование процессора?Если вы не получаете предупреждения памяти, что заставляет вас думать, что это утечка?

Комментарий Тима верен в том, что вы должны сосредоточиться на использовании процессора.Тем не менее, весьма эффективно предположить, что приложение замедляется из-за увеличения алгоритмических затрат, связанных с растущим рабочим набором.То есть, если в памяти больше объектов, и эти объекты все еще используются, тогда потребуется больше времени, чтобы их отбросить.

Это не так;ваша куча не увеличивается , что значительно, и, таким образом, похоже, что у вас чисто алгоритмическая проблема, если ваше приложение действительно замедляется.

...