Ограничить размер кучи Java Console? - PullRequest
0 голосов
/ 03 декабря 2008

У меня есть Java-апплет (фактический ), который генерирует частые сообщения журнала в System.out. Если консоль Java включена в браузере пользователя, она, конечно, сохранит ссылки на все эти строки и предотвратит их сборку мусора. Проблема заключается в количестве журнальных сообщений, которые сохраняет консоль: куча апплета растет очень быстро. После четырех дней работы он выдаст исключение OutOfMemory. Насколько я могу судить по jmap и jhat, строки журнала представляют большую часть его занимаемой площади.

Существует ли API для более жесткого ограничения количества или общего размера сообщений, сохраняемых консолью Java? В случае ошибки мне понадобятся только самые последние сообщения. Консоль в какой-то момент начинает удалять самые старые сообщения, но только после того, как она стала действительно огромной.

Я понимаю, что «не запускайте консоль» или «просто очищайте консоль» - это возможные решения, но вы когда-нибудь пытались спросить у нетехнического пользователя, включена ли у него консоль Java? Или попытаться провести их через просмотр и очистку? Я действительно хотел бы, чтобы они оставили консоль включенной, чтобы я мог видеть сообщения в случае ошибки.

1 Ответ

1 голос
/ 03 декабря 2008

Вместо System.out.println используйте java.util.logging . Гораздо проще изменить уровни журнала позже и уменьшить количество сообщений журнала.

Также проверьте MemoryHandler , он использует буфер и автоматически удаляет старые сообщения журнала.

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