Sun JRE パフォーマンスチューニングホワイトペーパー から、_-XX:+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/で1.6u20へのソースを見つけることができません。 jdk6/source / 。
-XX:+AggressiveOpts
_が有効かを把握する他の方法はありますか?特定のリリースを確認するには:
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