2010-06-02 62 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

相关问题