ホットスポットのJITについての講義では、JITが実行する特定の最適化の可能な限り多くの例を挙げたいと思います。ホットスポットJITの最適化
私は「メソッドインライン化」について知っていますが、さらに多くのものが必要です。すべての例に投票してください。
ホットスポットのJITについての講義では、JITが実行する特定の最適化の可能な限り多くの例を挙げたいと思います。ホットスポットJITの最適化
私は「メソッドインライン化」について知っていますが、さらに多くのものが必要です。すべての例に投票してください。
さて、Brian Goetzの記事をスキャンしてください。
簡単に言えば、ホットスポットは、となりますことができます。
エトセトラ
オペコードのJVM解釈ではなく、同等のネイティブマシンコードにジャンプします。 Javaアプリケーションの多用されている部分(JVMの拡張機能と同等)のマシンコード(JVM)をマシンコードでシミュレートする必要がないため、速度が向上します。
もちろん、それはHotSpotのほとんどです。
this articleにはまだ古いものの有効な概観があります。
ハイライトは利用できるランタイムプロファイリング情報に基づいて、古典的な最適化を実行しているように見える:
そして、短命のオブジェクトを安価に割り当てる世代のGCや、他にもさまざまな小さな最適化に加えて、広告があったものその記事が出版されて以来
さらに詳細なofficial whitepaperと、かなりのJavaのコードを書く方法をリストアップした、かなりユースケースが最適化されているかどうかを推測できるようにする必要があります。HotSpot Internals wiki page
のJikes RVMサイト上で、現代のJVMで使用される最適化に大きな発表がある: ACACES’06 - Dynamic Compilation and Adaptive Optimization in Virtual Machines
は、アーキテクチャ、トレードオフ、測定、技術について説明します。また、マシンコードを最適化するためにJVMが行う20以上のことを挙げています。
私は興味深いものは、従来のコンパイラがJITに反することができないものだと思います。メソッドのインライン化、デッドコードの除去、CSE、ライブ解析などあなたの平均的なC++コンパイラも同様です。ここでは特別なものはありません。
しかし、楽観的な仮定に基づいて何かを最適化し、後でそれらが間違っていると判明すると、 (特定のタイプを仮定していない場合には、後で失敗するブランチを削除します。)現時点でクラスが1つしか存在しないことを保証できれば、バーチャルコールを削除します。適応最適化とは、JITがミルC++コンパイラの実行と実際に区別されるということです。
JITで実行時プロファイリングを実行して、どの最適化を適用するかを分析することもできます(ただし、プロファイルに基づくすべての最適化ではそれほどユニークではありません)。
すばらしい!ありがとうございました。 – alf
死んでいるようです。http://www.complang.tuwien.ac.at/andi/ACACES06.pdf – user60561