Какие флаги включены -XX: + AggressiveOpts в Sun JRE 1.6u20? - PullRequest
31 голосов
/ 02 июня 2010

Из Sun JRE Технический документ по настройке производительности , -XX:+AggressiveOpts Флаг описывается как:

Включает точку исполнения оптимизации, которые, как ожидается, будут по умолчанию в следующих выпусках. Изменения, сгруппированные по этому флагу незначительные изменения в JVM, скомпилированные во время выполнения код и не отличная производительность функции (такие как BiasedLocking и ParallelOldGC). Это хороший флаг для попробуйте новейшие инженерные команды JVM настройки производительности для предстоящего релизы. Примечание: эта опция Экспериментальная! Конкретные оптимизации, включенные этой опцией может меняться от выпуска к выпуску и даже строить, чтобы строить. Вам следует переоценить эффекты этой опции с до развертывания нового выпуска Java.

Мои тесты производительности показывают, что использование -XX:+AggressiveOpts на самом деле помогает моему приложению, но так как это помечено как экспериментальное, я хочу быть осторожным с ним (я был сожжен этим в прошлом). Итак, я хочу знать, какие флаги включены -XX:+AggressiveOpts на 1.6u20. Обычно я делаю это, просматривая метод Arguments::set_aggressive_opts_flags() в hotspot/src/share/vm/runtime/arguments.cpp файле, но я не могу найти источники до 1.6u20 в http://download.java.net/jdk6/source/.

  • Есть ли другой способ выяснить, какие флаги -XX:+AggressiveOpts включить?
  • Где взять исходники для релиза 1.6u20?

Ответы [ 2 ]

41 голосов
/ 26 января 2014

Чтобы проверить это для определенного выпуска:

java -XX:-AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version > no_agg
java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version > agg

А затем сделайте diff (diff -U0 no_agg agg).

Например, JDK 1.7.0_51:

-     bool AggressiveOpts                           := false           {product}
+     bool AggressiveOpts                           := true            {product}

-     intx AutoBoxCacheMax                           = 128             {C2 product}
+     intx AutoBoxCacheMax                           = 20000           {C2 product}

-     intx BiasedLockingStartupDelay                 = 4000            {product}
+     intx BiasedLockingStartupDelay                 = 500             {product}

-     bool UseFPUForSpilling                         = false           {C2 product}
+     bool UseFPUForSpilling                         = true            {C2 product}

JDK 1.8.0:

-     bool AggressiveOpts                           := false           {product}
+     bool AggressiveOpts                           := true            {product}

-     intx AutoBoxCacheMax                           = 128             {C2 product}
+     intx AutoBoxCacheMax                           = 20000           {C2 product}

-     intx BiasedLockingStartupDelay                 = 4000            {product}
+     intx BiasedLockingStartupDelay                 = 500             {product}

-     bool EliminateAutoBox                          = false           {C2 product}
+     bool EliminateAutoBox                          = true            {C2 product}

-     bool UseFPUForSpilling                         = false           {C2 product}
+     bool UseFPUForSpilling                         = true            {C2 product}
6 голосов
/ 09 сентября 2011

Проверьте это сообщение в блоге, чтобы узнать без необходимости углубляться в код. http://q -redux.blogspot.com / 2011/01 / инспектирование-точка доступа-JVM-options.html

...