Использование памяти меняется очень быстро, это нормально? - PullRequest
0 голосов
/ 22 января 2012

Мне просто интересно, нормально ли, что использование памяти меняется так быстро.

Я запускаю этот код Это учебник «Как сделать простую игру».

Я добавляю некоторый код в основной цикл игры:

g.setColor(Color.cyan);
g.drawString(System.currentTimeMillis() + "\n\n/nRAM:[" + (runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024 + " MB]", 100, 100);

Использование оперативной памяти меняется очень быстро между 25-30 и так далее,

Мой вопрос: почему так происходит??Это неправильное поведение или это не имеет значения?Неправильно ли написан код?

РЕДАКТИРОВАТЬ: Я подозрительно, потому что, например, на этом видео использование памяти стабильно, более того, в игре «Brackeen» используется то же самое использование (25 МБ), пока не прекратится воспроизведение звука.

Ответы [ 2 ]

3 голосов
/ 22 января 2012

В Java управление памятью обрабатывается сборщиком мусора автоматически.Таким образом, если объект больше не нужен (на него не осталось ссылок), он не сразу освобождается, а остается в памяти.Время от времени (в зависимости от нескольких факторов, таких как настройки JVM, максимальные размеры кучи и т. Д.) Сборка мусора запускается и удаляет ненужные объекты.Поскольку это происходит не каждый кадр, вы видите, что использование памяти растет, а затем внезапно падает, когда происходит сборка мусора.

1 голос
/ 22 января 2012

Если вы создаете много мусора, вы можете видеть, что он производит 500 МБ в секунду или более.

Если вы используете профилировщик памяти, вы можете уменьшить потребление памяти, и оно может снизиться до менее чем 1 МБ в минутудля работающей программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...