Настройка производительности JVM: молодое копирование против старого поколения g c

Привет: У меня есть многопоточное Java-приложение. Есть много временных объектов.
-XX:MaxTenuringThreshold=1Мы ставим вышеуказанный параметр при запуске JVM. Это означает, что все объекты будут выживать один раз во время gc, а затем будут переведены в старое поколение. Можем ли мы поставить это -XX:MaxTenuringThreshold=10 например, чтобы этот объект был переведен в старое поколение JVM старого поколения после 10 раз gc. Но вызовет ли это ненужную операцию копирования во время молодого gc (поскольку объекты копируются "из" eden "в" from ", из" from "в" to "," from "," to "- это два буфера оставшихся в живых)?

Вопросы могут также означать, если: а) в молодом поколении имеется многократное копирование, менее старое поколение gc, б) сборка мусора в старом поколении, но мало копий в молодом поколении, какой из них лучше для хорошей производительности?

1 ответ

Какой из них "лучше для хорошей производительности", очень сильно зависит от вашего приложения и условий, в которых он работает. Ваша лучшая надежда состоит в том, чтобы попробовать различные варианты сборки мусора, а затем выполнить время выполнения и профилирование памяти, чтобы получить лучший компромисс между использованием памяти и скоростью.

К сожалению, в настройках сборки мусора нет серебряной пули.

Другие вопросы по тегам