Рис. 17.7. Монитор памяти показывает след использованной памяти, который и говорит об использовании игровым мидлетом ресурсов телефона
По умолчанию монитор памяти открывается на вкладке Graph, которая отображает след использования памяти запущенного мидлета. График отражает текущий объем занятой мидлетом памяти. Точное значение можно узнать в стоке статуса, расположенной в нижней части окна. Играя, интересно наблюдать за увеличениями и уменьшениями объема используемой памяти. Вы можете эмулировать запуск сборщика мусора, для чего щелкните по кнопке Run GC, расположенной в верхней части монитора памяти.
Другая вкладка в мониторе памяти – это вкладка Objects (Объекты), которая отображает информацию об объектах в памяти. На рис. 17.8 показаны данные о памяти для игры Henway.
Рис. 17.8. Вкладка Objects в мониторе памяти дает детальный обзор объектов мобильной игры в памяти
В панели слева на вкладке Objects (Объекты) перечислены все объекты игрового мидлета, находящиеся в памяти. В данном случае это объекты игры Henway. Ниже приведены назначения каждой из колонок списка объектов:
► Name (имя) – полное имя объекта;
► Live (активный) – число активных объектов в памяти;
► Total (всего) – общее число объектов в памяти;
► Total size (общий объем) – полный объем памяти, занимаемый объектами;
► Average size (средний размер) – средний размер одного объекта (в байтах).
Используя эту информацию, вы сможете узнать, какие объекты находятся в памяти в любой момент времени, а также каков объем используемой объектами памяти. Помните, что в мобильных играх процесс создания и удаления объектов требует времени, поэтому по возможности старайтесь повторно использовать объекты. Вы можете сравнить общее число объектов с числом активных объектов и понять, сколько объектов хранится в памяти между очистками мусора. В идеале эти два числа должны совпадать, что означает, что в памяти нет незадействованных объектов.
...
Совет Разработчику
Несмотря на то что монитор памяти может быть очень полезным в анализе требований мидлета к памяти, в реальном мобильном телефоне все может обстоять иначе – управление памятью может отличаться от того, как это имитируется в J2ME-эмуляторе. Но даже в этом случае монитор памяти очень полезен для создания общей картины работы мидлета с памятью.
Выполнение оптимизации мобильных игр
У вас уже есть представление об оптимизации мобильных игр и приемах оптимизации кода мидлета. Теперь пора подойти к глобальному понятию важности оптимизации мобильных игр. В дополнение к тому, что вы разрабатываете достаточно эффективные мидлеты, нетребовательные к памяти, важно применять описанные выше стратегии оптимизации. Я не советую уделять очень много внимания оптимизации по скорости, пока вы не поймете, что мидлет работает действительно медленно. Иначе говоря, всегда хорошо снизить размер мидлета и объем используемой им памяти, однако не усложняйте код, выполняя оптимизацию по скорости, если только это действительно необходимо.
Последний вопрос, касающийся оптимизации мобильных игр, заключается в анализе необходимости. Если вы изучите код примеров, приводимых в книге, то не найдете специальной оптимизации. Оптимизация усложняет код, а цель этой книги – научить вас, как работает игровой код. Поэтому не думайте, что я – лентяй или ханжа, когда увидите, что большинство кода не оптимизировано. Я применил оптимизацию при разработке мидлетов. Вы увидите, что все мидлеты, приведенные в этой книге, сравнительно просты и нетребовательны, что и является лучшей оптимизацией.
Резюме
В этой главе я сделал отступление от программирования, которым мы занимались в предыдущих главах, и затронул интересный вопрос, касающийся мобильных игр, оптимизацию. Есть несколько аспектов оптимизации мидлетов, влияющих на разработку и программирование, но, несомненно, оптимизация в некотором смысле является важнейшим моментом работы разработчика игр. Эта глава началась с рассмотрения основ оптимизации и ее применения к мобильным играм. Затем вы познакомились с основными стратегиями оптимизации, которые помогут сделать мидлеты меньше и менее требовательными к памяти. Затем вы перешли к изучению особых приемов оптимизации Java-кода, позволяющие ускорить выполнение кода мидлета. Наконец, глава завершилась обзором анализа кода и мониторинга памяти, которые играют очень важную роль при выполнении оптимизации.
Читать дальше
Конец ознакомительного отрывка
Купить книгу