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

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

打开在即将发布的版本中默认启用的点性能优化。 按此标志分组的更改是对JVM运行时编译代码的微小更改,而不是不同的性能function(例如BiasedLocking和ParallelOldGC)。 这是尝试JVM工程团队即将发布的最新性能调整的好旗帜。 注意:此选项是实验性的! 此选项启用的特定优化可以在发行版之间进行更改,甚至可以构建为构建版本。 在部署新版本的Java之前,您应该重新评估此选项的效果。

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

  • 还有其他方法可以找出-XX:+AggressiveOpts启用的标志吗?
  • 我在哪里可以获得1.6u20版本的资源?

检查特定版本:

 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} 

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