2010-06-02 55 views
27

從太陽JRE performance tuning whitepaper,被描述-XX:+AggressiveOpts標誌爲:-JX啓用了哪些標誌:+ Sun JRE 1.6u20上的AggressiveOpts?

打開運算性能 被預計 在默認情況下,在即將發佈的優化。 按此標誌分組的更改爲 對JVM運行時編譯的 代碼進行的較小更改,而不是明顯的性能 功能(例如BiasedLocking和 ParallelOldGC)。這是一個很好的標誌 嘗試JVM工程團隊的最新 性能調整爲即將發佈的 版本。注意:這個選項是 實驗!該選項 啓用的特定 優化可以從發佈版本更改爲 ,甚至構建版本。在部署Java的新版本 之前,您應該 重新評估此選項 的影響。

我的性能測試表明,採用-XX:+AggressiveOpts實際上幫助我的應用程序,但由於這是標記爲實驗我要小心它(我已經通過它在過去被燒燬)。所以,我想知道1.6u20上的-XX:+AggressiveOpts啓用了哪些標誌。通常我通過查看hotspot/src/share/vm/runtime/arguments.cpp文件中的方法Arguments::set_aggressive_opts_flags()來實現此目的,但我無法在http://download.java.net/jdk6/source/找到1.6u20的源代碼。

  • 有一些其他的方式來弄清楚什麼旗-XX:+AggressiveOpts 啓用?
  • 從哪裏可以獲得1.6u20發佈的源代碼?
+0

國旗上也影響使用ALT-rt.jar中與rt.jar中的? http://stackoverflow.com/questions/6979890/difference-of-hashmap-in-alt-rt-jar-and-rt-jar – 2012-11-23 11:02:45

回答

36

要檢查它的特定版本:

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} 
+0

這隻適用於具有'-XX:+ PrintFlagsFinal'的虛擬機;儘管如此,我將此標記爲答案,因爲它回答了我的原始問題,可能對其他人有用。 – 2014-01-29 06:17:41

相關問題