G1 Collector
Еще одна прекрасная оптимизация, для которой только что вышло обновление Java 8, - дедупликация строки G1 Collector. Поскольку строки (и их внутренние массивы char []) занимают большую часть нашей кучи, была проведена новая оптимизация, которая позволяет сборщику G1 идентифицировать строки, которые дублируются более одного раза в вашей куче, и исправлять их, чтобы они указывали на один и тот же внутренний символ [], чтобы избежать неэффективного размещения нескольких копий одной и той же строки в куче. Вы можете использовать аргумент -XX:+UseStringDeduplicationJVM
, чтобы проверить это.
Параллельный полный GC в G1GC
Сборщик мусора G1 был печально известен тем, что выполнял однопоточный полный цикл GC. В то время, когда вам нужно все оборудование, которое вы можете собрать для поиска неиспользуемых объектов, мы ограничиваемся одним потоком. В Java 10 они исправили это. Полный GC теперь работает со всеми ресурсами, которые мы к нему добавляем.
Параметры JVM: -Xlog:gc,gc+cpu::uptime -Xmx4g -Xms4g -Xlog:gc*:details.vgc
Это выведет каждое событие GC и его использование ЦП на стандартный вывод, показывая только время работы в качестве тега. Настройка -Xlog:gc*
аналогична -XX:+PrintGCDetails
предыдущих версий Java.