Недавно я заметил очень низкую производительность после бега. Проверив, я обнаружил, что использование памяти остается на уровне 4 ГБ, а затем падает до менее 1 ГБ. Я подозреваю, что он очищает множество объектов, поэтому производительность становится такой плохой.
Итак, вопрос в том, почему сборка мусора в Java выполняется так поздно? То есть зачем ждать, пока куча заполнится, а затем выполнять сборку мусора? Разве он не должен собирать мусор через регулярные промежутки времени?
Объекты, которые хранятся в HashMap, создаются прямо в этот самый момент, то есть они недолговечны.
Это в Linux (RHEL), Oracle JVM HotSpot 7. 64-бит. 4 ядра. Вот как приложение запускается:
Код: Выделить всё
java -jar -Xmx4g prog.jarПодробнее здесь: https://stackoverflow.com/questions/165 ... erformance
Мобильная версия