Настройка производительности JVM: молодое копирование против старого поколения gc - PullRequest
2 голосов
/ 07 июня 2011

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

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

1 Ответ

4 голосов
/ 07 июня 2011

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

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

...