Используйте один из вариантов:
-Dsun.reflect.inflationThreshold=30
Увеличивает количество вызовов через конструктор / метод / поле до того, как собственный метод доступа будет «накачан» к сгенерированному средству доступа. По умолчанию установлено значение 15.
-Dsun.reflect.inflationThreshold=0
Отключает инфляцию в целом. Интересно, что эта опция, похоже, не влияет на конструкторы, но она работает для методов.
Вы можете проверить параметры с помощью простого тестового приложения:
public class a {
public static void main(String[] args) throws Exception {
for (int i = 0; i < 20; i++) {
a.class.getDeclaredConstructor(null).newInstance(null);
}
}
private static int x;
public a() {
new Throwable("" + x++).printStackTrace();
}
}
Редактировать (29 декабря 2013): Опция -Dsun.reflect.noInflation=true
отключает механизм инфляции и вместо этого сразу использует сгенерированные средства доступа, поэтому вам не нужна эта опция.