Сначала отделяют CPU, память, ввод-вывод и паузы GC по метрикам и профилям. Затем ищут причины аллокаций и удержания объектов, а не сразу меняют сборщик.
Как профилировали производительность и работали с garbage collector?
Сначала отделяют CPU, память, ввод-вывод и паузы GC по метрикам и профилям. Затем ищут причины аллокаций и удержания объектов, а не сразу меняют сборщик.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала отделяют CPU, память, ввод-вывод и паузы GC по метрикам и профилям. Затем ищут причины аллокаций и удержания объектов, а не сразу меняют сборщик.
Для JVM полезны GC-логи и профили памяти; в Spark — также метрики executors и задач. Длительные паузы могут быть следствием крупных объектов, перекоса или чрезмерного кеширования.
Укажите язык и runtime: универсальной настройки GC нет. Меняйте один фактор и сравнивайте на похожей нагрузке; профилирование тоже имеет накладные расходы.