2013-03-14 4 views
8

Рассматривая possible JVM flags for optimizing launching startup time моего продукта RCP, я нашел эти привлекательно названные -XX:UseFastEmptyMethods и -XX:UseFastAccessorMethods.Вариант JVM XX: UseFastEmptyMethods/XX: UseFastAccessorMethods

Кажется, что эти флаги были доступны на JDK-6 (и по умолчанию), в то время как они по умолчанию были отключены на JDK-7. Кроме того, я читал, что компромисс для этой оптимизации заключается в том, что они не увеличивают счетчики вызовов методов.

Каково влияние использования счетчиков вызовов? Это влияет на сбор мусора?

+1

им угадать это не повлияет на GC, но может повлиять на JIT, поскольку эти счетчики используются для определения «горячих» участков кода для оптимизации – radai

ответ

7

Он предназначен для правильного подсчета количества методов, чтобы виртуальная машина могла лучше определить точки доступа в коде.

После обсуждения с here

Если вы на JDK6, вы, возможно, потребуется включить эти два флага VM в вашем целевой Java приложения:
-XX: -UseFastEmptyMethods-XX : -UseFastAccessorMethods

в противном случае пустые методы и методы доступа не будет отображаться в списке, потому что «Быстрая» версия не увеличивает счетчик вызовов для этих методов . В JDK7 эти два флага по умолчанию равны false, поэтому у вас нет , чтобы установить их явно на ложь.


Смотрите также:

UseFastEmptyMethods/UseFastAccessorMethods considered harmful

+1

+1 спасибо. Хотя первая часть ответа немного не связана (я спрашиваю, почему и какие последствия для включения флагов), вторая ссылка полезна. Тем не менее, я бы узнал, в каких обстоятельствах превращение этого флага следует считать безопасным. –

Смежные вопросы