Ответ 1
Вы можете использовать jconsole для подключения к JVM, работающему локально. Это обеспечивает кнопку "Выполнять GC" в графическом интерфейсе.
При запуске java-процесса вам нужно указать -Dcom.sun.management.jmxremote.
Как я могу запросить сборку мусора Java извне, начиная программу из JAR (используемая Windows BAT)?
System.gc()
Но... Когда я запускаю банку из командной строки /bat, консоль java не открывается. Не удалось найти помощь с кратким поиском, возможно, кем-то здесь?
Вы можете использовать jconsole для подключения к JVM, работающему локально. Это обеспечивает кнопку "Выполнять GC" в графическом интерфейсе.
При запуске java-процесса вам нужно указать -Dcom.sun.management.jmxremote.
Если вы используете самую последнюю версию java 6, у вас также есть jvisualvm, который дополняет и расширяет функциональность jconsole. Они оба очень полезны.
Для чисто командной строки вы должны использовать jcmd
. Я считаю, что jcmd был частью стандартной установки JDK с по крайней мере Java 1.7. Команда будет примерно такой:
jcmd <process-id> GC.run
Вы можете получить список доступных диагностических команд, которые jcmd предоставляет для определенного процесса следующим образом:
jcmd <process-id> help
У вас обычно не должно быть причин, чтобы принудительно собирать мусор. Выполняя это, запутывают алгоритмы сбора мусора (в основном их производительность). Это также замедлит программу во время сбора мусора. Если проблема с памятью, вы должны использовать инструменты трассировки памяти, чтобы узнать, где находятся ссылки. (Не зарегистрированы ли слушатели?)
Как и в других ответах, вы можете использовать jconsole или jvisualvm. Вы также можете использовать jmx для программного программирования.