31 Stimmen

Welche Flags werden durch -XX:+AggressiveOpts auf Sun JRE 1.6u20 aktiviert?

Von Sun JRE Whitepaper zur Leistungsoptimierung , -XX:+AggressiveOpts Flagge wird als beschrieben:

Schaltet die Punktleistung ein Optimierungen, von denen erwartet wird, dass sie in kommenden Versionen standardmäßig aktiviert werden. Die durch dieses Flag gruppierten Änderungen sind kleinere Änderungen am kompilierten Code der JVM-Laufzeit Code und keine ausgeprägte Leistung Funktionen (wie BiasedLocking und ParallelOldGC). Dies ist eine gute Kennzeichnung, um die neueste Version des JVM-Entwicklungsteams Leistungsverbesserungen für kommende Veröffentlichungen. Hinweis: Diese Option ist experimentell! Die spezifischen Optimierungen, die durch diese Option aktiviert werden können sich von Version zu Version ändern und sogar von Build zu Build ändern. Sie sollten die Auswirkungen dieser Option neu bewerten überprüfen, bevor Sie eine neue Version von von Java.

Meine Leistungstests zeigen, dass die Verwendung von -XX:+AggressiveOpts hilft meiner Anwendung tatsächlich, aber da dies als experimentell gekennzeichnet ist, möchte ich damit vorsichtig sein (ich habe mich in der Vergangenheit daran verbrannt). Ich möchte also wissen, welche Flags aktiviert sind durch -XX:+AggressiveOpts auf 1.6u20. Normalerweise tue ich dies, indem ich mir die Methode Arguments::set_aggressive_opts_flags() sur hotspot/src/share/vm/runtime/arguments.cpp Datei, aber ich kann die Quellen zu 1.6u20 nicht finden unter http://download.java.net/jdk6/source/ .

  • Gibt es eine andere Möglichkeit, herauszufinden, welche Flaggen -XX:+AggressiveOpts ermöglichen?
  • Wo kann ich die Quellen für die Version 1.6u20 bekommen?

42voto

valodzka Punkte 5149

Um sie auf eine bestimmte Freigabe zu prüfen:

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

Und dann machen Sie diff ( diff -U0 no_agg agg ).

Zum Beispiel 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}

6voto

In diesem Blogbeitrag erfahren Sie es, ohne in den Code eintauchen zu müssen. http://q-redux.blogspot.com/2011/01/inspecting-hotspot-jvm-options.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X