从Sun JRE performance tuning whitepaper,-XX:+AggressiveOpts
标志被描述为:
打开点性能 预期的优化 在即将发布的版本中默认启用。 按此标志分组的更改是 对编译的JVM运行时的微小更改 代码并没有明显的性能 功能(如BiasedLocking和 ParallelOldGC)。这是一个很好的标志 试试JVM工程团队的最新动态 即将到来的性能调整 版本。注意:此选项是 实验!具体 此选项启用优化 可以从发布版本更改为发布版本 甚至建立起来。你应该 重新评估此选项的效果 在部署新版本之前 Java。
我的性能测试表明使用-XX:+AggressiveOpts
实际上有助于我的应用程序,但由于这被标记为实验性的,我要小心它(过去我被它烧过)。所以,我想知道1.6u20上-XX:+AggressiveOpts
启用了哪些标志。通常我会通过查看Arguments::set_aggressive_opts_flags()
文件中的方法hotspot/src/share/vm/runtime/arguments.cpp
来执行此操作,但我无法在http://download.java.net/jdk6/source/找到1.6u20的来源。
-XX:+AggressiveOpts
启用? 答案 0 :(得分:41)
检查特定版本:
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}
答案 1 :(得分:6)
查看此博客文章,无需深入了解代码即可查找。 http://q-redux.blogspot.com/2011/01/inspecting-hotspot-jvm-options.html