Странные проблемы с памятью IOS

#ios #memory

#iOS #память

Вопрос:

У меня есть игра для устройств iOS. За пару дней до этого у меня возникла проблема с памятью на разных устройствах.

Что я делаю: 1. Удалите с устройства мою игру. 2. «Продукт-> Очистить» его в xCode. 3. Запустите его на устройстве. 4. Посмотрите на память в инструментах (монитор активности). 5. Возьмите другое устройство. 6. Повторите с первого шага.

iPad 1 с iOS 4.3.1: игра работает нормально, 51 МБ памяти используется в главном меню, 105 МБ на первом уровне. iPad 1 с iOS 5, iPod 4 с iOS 5: сбой игры, 77 МБ в главном меню, 130 МБ на первом уровне.

У кого-нибудь такая же проблема? Это из-за более новой iOS?

31.10.2011 Шесть часов контрольных точек и переходов между устройствами дают мне следующее: в iOS 4.3.1 функция glTexSubImage2D, которую можно найти в OpenGLES.framework, никогда не выделяет никакой памяти.

Та же функция в iOS 5.0 вызывает

glTexSubImage_Exec ->

gleSynchronizeTextureLevelOnCurrentDevices ->

gfxUploadPluginTextureLevel ->

gfxAllocateTextureLevel ->

malloc

В конце концов, у меня были разные параметры пикселей в glTexImage2D и glTexSubImage2D, что привело к дополнительным 30% памяти для каждого из спрайтов. В 4.3.1 разница в параметре пикселей была в порядке, но в 5.0 это не так. Я не знаю, ошибка это или нет. Спасибо всем.

Комментарии:

1. Если произошел сбой, выясните, почему. Опубликуйте сообщения о сбое консоли и трассировку стека.

Ответ №1:

Вам нужно выяснить, куда на самом деле уходит ваша память. Инструменты — хорошее начало, но вы, вероятно, захотите сделать снимки в разных точках и сравнить. (Я предполагаю, что вы уже использовали инструмент утечки для выявления истинных утечек, а не только раздувания памяти.)

Комментарии:

1. хорошо, спасибо. Я решил проблему. Решение находится в тексте вопроса