понедельник, 21 января 2013 г.

Cocos2d-x Жрем память....


Если вы в тупике по поводу жора памяти в cocos2d-x, возможно эта статья вам поможет!

С недавнего времени начал писать под iOS, выбрал cocos2d-x. Скачал с http://www.cocos2d-x.org версию движка 2.0.4. Прочитал не мало инфы про него, прочитал англоязычную книжку cocos2d. И решил пора начинать... До недавнего времени я программировал на JAVA для OS Android. Использовал бесплатный движок AndEngine. Написал пару игрушек, первая - Охота Мюнгхаузена (первый блин комом) , вторая Truck advernture. Вот собственно: Мои игры.
Так вот, к чему все это... К тому, что вторая моя игра попала в топ на www.amazon.com. И начала приносить доход. Это и подтолкнуло меня переписать ее для iOS, чтобы опубликовать на AppStore. Все было хорошо, игрушка писалась, потихоньку, я почти закончил проект.  Пишу ее в XCode под MAC OS.  Но возникла проблема, приложение начало падать. Причем XCode ничего не говорил по этому поводу, кроме Finished Running Truck Adventure... Несколько дней прогонял ее в профайле (инструменты для разработчика, можно запустить свой проект для профайлинга), нашел пару незначительных ликов по 5 кб. В Allocations память, как будто и не девалась никуда... В Leaks, как уже говорил, нашел пару ликов... В общем продолжалось это неделю, так нечего и не сдвинулось с места. Перечитал кучу форумов,  ответа так и не нашел...
Но, буквально, вчера случайно наткнулся на один пост: http://stackoverflow.com/questions/13231570/is-it-normal-that-my-cocos2d-app-increase-real-memory-usage-every-second/13234008#13234008,  Там у человека та же проблема... Он натолкнул меня на мысль в профайле запустить Activity Monitor, до этого анализировал только память и лики...  

Вот оно!! В Activity Monitor видно, как мой процесс каждые 2 секунды отъедает по 200 кб. физической памяти!!!! непонятно куда!!!?? 

И начались пляски с бубном, закоментил всё в стартовом слое, жор так и не уменьшился.
В общем не буду долго писать, что я только не предпринимал, все в бестолку!
В архиве с движком также идут сэмплы. Очень полезные примеры... Так вот запускаю TestCpp - это демка возможностей, от авторов движка, с исходниками, в Activity Monitor память как вкопанная, ничего нигде не растет :)  Копирую свой стартовый слой в проект TestCpp,  подправил код запуска, теперь TestCpp стартует мой CCLayer... Все нормально, память не растет. Значит дело не в моем коде, а настройках проекта, я так полагаю. Несколько часов сравнивал настройки своего проекта и TestCpp, ничего из этого не вышло!
Но я решил свою проблему. Удалил все с демо проекта TestCpp и добавил туда файлы с классами и ресурсами, со своего проблемного проекта... Test Cpp переименовал в Truck Adventure вот так:http://stackoverflow.com/questions/5043066/change-name-of-iphone-app-in-xcode-4
И все в прядке.
Надеюсь вам поможет моя статья )))

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

Отправить комментарий