Установить ограничение времени GC / Удалить распределение в событиях - PullRequest
1 голос
/ 04 июля 2011

Есть ли способ установить ограничение времени для ГХ?

Я спрашиваю, потому что я пишу игру, которая распределяет некоторые поплавки, целые и длинные значения для каждого события, и я предпочел бы вызвать GC на короткий промежуток времени (5-20 мс), чтобы удалить их. Затем я бы назвал GC в каждом игровом цикле. Этот путь был бы моим личным фаворитом, так как у меня все еще есть некоторые распределения, которые я не могу отследить без особых усилий (большинство вещей я уже удалил).

В качестве альтернативы я бы искал другие распределения и как-то их предотвращал, но тогда мне нужен был бы способ предотвратить распределения в событиях.

Вот результат отслеживания распределения при необходимости: http://textsave.de/?p=67220

EDIT: Я ничего не могу найти с трекером выделения, все объекты из какого-то далекого внутреннего java-класса (даже в трассировке). Кроме того, показанные объекты находятся далеко от собираемых чисел (если сборщик мусора не считает float [] как несколько объектов).

У кого-нибудь есть такая проблема?

1 Ответ

1 голос
/ 04 июля 2011

Есть ли способ установить ограничение времени для ГХ?

Нет, но оно уже довольно короткое.

Я спрашиваю, потому что я пишу игру, которая распределяет некоторые поплавки, целые и длинные значения для каждого события

Не делай этого. Предварительно выделите вашу память.

и я бы скорее позвонил в ГК на короткий промежуток времени (5-20 мс), чтобы удалить их. Я бы тогда звонил GC в каждом игровом цикле

Вы можете позвонить System.gc(), но вы не можете контролировать продолжительность, в течение которой он работает. Обычно это порядка десятков миллисекунд. Тем не менее, вам лучше обслужить, прежде всего избегая выделения ресурсов, поддерживая собственный пул объектов.

...