Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Out of Memory 
:(
    Опции темы
darkvivi
Дата 16.6.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.9.2008

Репутация: 1
Всего: 1



 Для написания игры мне требуется много  массивов и много ячек в каждом из массивов. Если я делаю их слишком много, то игра выдаёт  Out of memory. Как сохранить память? (а если я делаю методы, это сохраняет память? т.е. не пишу в update(), а создаю собственный метод и ссылаюсь на него). Как лучше всего создавать большие массивы для сохранения памяти??
          Спасибо smile 
PM MAIL   Вверх
Skynin
Дата 16.6.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 2
Всего: 10



Если память занята - то она занята.
Большие массивы лучше не создавать, а оптимизировать алгоритмы работы, и когда нужны будут - маленькие по занимаемой памяти массивы. Хитростей оптимизации много - можно поучиться по книжке "Алгоритмы. Построение и анализ" Т. Кормен, Ч. Лейзер
В самом крайнем случае можно сохранять массив в RMS а работать только с нужной частью. Тогда, правда, оптимизировать придется еще мудреней, потому что чтение/запись в RMS ну очень медленная.

фразы - а если я делаю методы, это сохраняет память? т.е. не пишу в update(), а создаю собственный метод и ссылаюсь на него - не понял.

PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
math64
Дата 16.6.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Если для хранения значений достаточно short или byte - используйте их вместо int.
Вместо двух- или трёхмерного массива можно использовать линейный и написать метод доступа.
Если в массиве много нулей, его нужно как-то запаковать.
PM   Вверх
darkvivi
Дата 17.6.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.9.2008

Репутация: 1
Всего: 1



 Short или byte? Сейчас попробую. А как быть со Sprite[]?

Это сообщение отредактировал(а) darkvivi - 17.6.2009, 16:14
PM MAIL   Вверх
Skynin
Дата 17.6.2009, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 2
Всего: 10



Цитата

А как быть со Sprite[]?

Уменьшать размер объектов класса Sprite. Если Sprite - это класс хранящий кадр-картинку, то может заменить скажем 8 Sprite на один FrameSprite8 - в котором будет хранится первоначальная картинка, а остальные кадры - изменения к ней, (или к предыдущей картинке)
Выгружать спрайты из памяти, если не видны.

и т.д.
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
math64
Дата 18.6.2009, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Не пользуйся Game Builder из NetBeans или т.п. (или делай свой), Game Builder все данные сохраняет в массивах, инициализируемых в коде класса, а значит все эти массивы будут загружены в память, даже если они не нужны.
Картинки для спрайтов - в одном PNG, а нужный спрайт можно когда нужно создать из Image.
Но для экономии памяти можно спрайтами не пользоваться.
PM   Вверх
darkvivi
Дата 18.6.2009, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.9.2008

Репутация: 1
Всего: 1



 А чем лучше пользоваться?
PM MAIL   Вверх
math64
Дата 18.6.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Читай Любавин С.А. - Программирование игр для сотовых телефонов на J2ME.
Кстати, Game Builder'ом можно воспользоваться для того чтобы отредактировать игровое поле, посмотреть как движутся спрайты.
Но итоговую программу создавать в другом проекте. Сгенерированные Game Builder'ом массивы преобразовать в двоичные файлы ресурсов и включить в новый проект.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.