-XX:+AggressiveOpts 在 Sun JRE 1.6u20 上启用了哪些标志?

2022-09-01 10:45:27

从 Sun JRE 性能调优白皮书中,标志被描述为:-XX:+AggressiveOpts

启用在即将发布的版本中默认启用的点性能优化。按此标志分组的更改是对 JVM 运行时编译代码的次要更改,而不是不同的性能特征(如 BiasedLocking 和 ParallelOldGC)。这是一个很好的标志,可以尝试JVM工程团队对即将发布的版本进行最新的性能调整。注意:此选项是实验性的!此选项启用的特定优化可以在版本之间更改,甚至可以从内部版本更改为内部版本。在部署新版本的 Java 之前,您应该重新评估此选项的影响。

我的性能测试表明,使用实际上对我的应用程序有帮助,但是由于这被标记为实验性,因此我要小心使用它(我过去曾被它烧毁过)。所以,我想知道在1.6u20上启用了哪些标志。通常,我通过查看文件中的方法来执行此操作,但是我无法在 http://download.java.net/jdk6/source/ 找到1.6u20的源代码。-XX:+AggressiveOpts-XX:+AggressiveOptsArguments::set_aggressive_opts_flags()hotspot/src/share/vm/runtime/arguments.cpp

  • 有没有其他方法可以弄清楚标志启用了什么?-XX:+AggressiveOpts
  • 我在哪里可以获得 1.6u20 版本的源代码?

答案 1

要检查特定版本:

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

然后进行差异()。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}

答案 2

查看此博客文章,无需深入研究代码即可找到答案。http://q-redux.blogspot.com/2011/01/inspecting-hotspot-jvm-options.html


推荐