2010-06-02 8 views
27

Od Sun JRE performance tuning whitepaper, -XX:+AggressiveOpts flaga jest opisany jako:Jakie flagi są włączone przez -XX: + AggressiveOpts w Sun JRE 1.6u20?

Włącza punkcie wydajności optymalizacje, które według przewidywań będą domyślnie w kolejnych wydaniach. Zmiany zgrupowane według tej flagi to: drobne zmiany w środowisku wykonawczym JVM, skompilowane pod numerem , oraz różne funkcje (takie jak BiasedLocking i ParallelOldGC). To jest dobra flaga dla wypróbować najnowsze korekty wydajności zespołu inżynieryjnego JVM dla nadchodzących wydań . Uwaga: ta opcja to eksperymentalna! Specyficzne optymalizacje włączone przez tę opcję mogą zmieniać się z wersji na wersję i można je skompilować do wersji . Przed wdrożeniem nowego wydania Javy należy dokonać ponownej oceny skutków tej opcji .

moich testów skuteczności wskazują, że stosując -XX:+AggressiveOpts faktycznie pomaga mój wniosek, ale ponieważ to jest oznaczone jako eksperymentalne Chcę być ostrożny z nim (I zostały spalone przez nią w przeszłości). Tak więc chcę wiedzieć, jakie flagi są włączone przez -XX:+AggressiveOpts na 1.6u20. Zazwyczaj robię to, patrząc na plik Arguments::set_aggressive_opts_flags() w pliku Arguments::set_aggressive_opts_flags() w hotspot/src/share/vm/runtime/arguments.cpp, ale nie mogę znaleźć źródeł do wersji 1.6u20 pod adresem http://download.java.net/jdk6/source/.

  • Czy istnieje jakiś inny sposób dowiedzieć się, co flagi -XX:+AggressiveOpts włączyć?
  • Skąd mogę pobrać źródła do wersji 1.6u20?
+0

Czy flaga wpłynąć również użycie Alt-rt.jar kontra rt.jar? http://stackoverflow.com/questions/6979890/difference-of-hashmap-in-alt-rt-jar-and-rt-jar –

Odpowiedz

36

Aby sprawdzić go dla danej wersji:

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

a następnie dokonać diff (diff -U0 no_agg agg).

Na przykład, 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} 
+0

działa to tylko na maszynach wirtualnych, które mają '-XX: + PrintFlagsFinal'; niemniej jednak zaznaczam to jako odpowiedź, ponieważ odpowiedziała na moje pierwotne pytanie i może być przydatna dla innych. –

Powiązane problemy