JITコンパイラの理解と最適化

コードを、コンパイルを生成実行する方法上のOracle JRockit JVMのが導入されました。

だけではなく、「ブラックボックス」

ユーザの視点からは、JRockit JVMのちょうどブラックボックスは、それが「変換」は、Javaコードになります高度に最適化されたマシンコードに:一端のJVMにJavaコード、もう一方の端は、プラットフォーム固有のマシンコードである一方で。

ここに画像を挿入説明
ブラックボックスの蓋を開けたときには、特定のオペレーティングシステム用のコードを最適化する前に撮影した別のアクションが表示されます。JVMコードを離れる前に、次の操作の一部を配置し、データ構造変換を変更します。

ここに画像を挿入説明

コードをコンパイルする方法JVM

Javaアプリケーションの動作を通じて、バックグラウンドでのJRockit JVMのコードジェネレータの実行が自動的に最高のパフォーマンスをするためにコードを調整します。示すように、コードジェネレータは、3つの段階での作業します:

ここに画像を挿入説明

JVM JITコンパイラの実行

最初のステップは、このコンパイルにより、あなたは起動によって生成された高度に最適化されたコードの場合とプラットフォーム用のJavaアプリケーションを実行することはできません(JIT)コンパイラのコード生成にあります。JVM JIT基準のではない、実際に一部が、それはまだジャワの必須成分です。理論的には、限りコールJavaメソッドとして、JITは、それはネイティブのマシンコードのJITバイトコードコンパイラは、そのコンパイラ「ジャストインタイム」を実行しますが、使用されます。

メソッドをコンパイルした後、JRockit JVMは、直接アプリケーションを高速に実行することをそう、コンパイルされたコードのメソッドを呼び出しますが、それを解釈しようとしないでください。しかし、運転中に、遅く、他のJVMよりも実際の開始のJRockit JVMを行い、新たな実行方法、何千ものを開始します。これはオーバーヘッドと実行JITコンパイル方式の大規模な量によるものです。だから、あなたはJVM JITを実行している場合は、JVMクイックスタート、その後、ではありませんが、速度が通常遅いです。あなたはJIT JVMを実行する場合、それはゆっくりと開始しますが、速く走ることがあります。ある時点で、あなたはそれがアプリケーションを実行しているよりも長いJVMを起動するために時間がかかることがあります。

あなたが時間を開始するすべてのメソッドをコンパイルするために起動したときに利用可能なすべての使用を最適化することはマイナスの影響を与えることになります。そのため、JITコンパイラは、完全に起動時にすべてのメソッドを最適化しません。

JVM監視スレッド

第二段階では、JRockit JVMは、洗練された、低コストを使用し、技術ベースの最適化の価値である特徴を決定するためにサンプリング:「サンプラースレッドは、」定期的に目を覚まし、およびいくつかのアプリケーションスレッドの状態を確認してください。これは、各実行中のスレッドの内容を識別し、いくつかの実行履歴を記録します。この方法のために最適化されている、(すなわち、「ホット」で)すべての追跡情報の方法、及びフェルトが広く使用されている方法。一般的に、継続的な実行速度が低下しますと、アプリケーションを実行しているの初期段階での最適化のための多くのそのような機会があるでしょう。

JVMが実行するように最適化

第3段階では、JVMは、それが最も一般的に使用される「ホット」方式が最適化されたアプローチだと思います。この最適化は実行されているアプリケーションに干渉することなくバックグラウンドで実行されます。

コードの最適化を示しています

この例では、JRockit JVMのJavaコードを最適化する方法の一部を示す図です。この例は非常に短いですが、それはあなたの実際のJavaコードを最適化する方法を理解していただくことができます。

Javaアプリケーションを最適化するための多くの方法についての議論が存在しないことに注意してください。

次の図では、最適化の前と後のコードを見ることができます。違いは、本質に見えるが、あなたはAクラスを実行するたびに、最適化されたコードは、クラスBに実行する必要はありませんのでご注意を喜ばないかもしれません

ここに画像を挿入説明

最適化のプロセス

オラクルのJRockit JVMは、コードを最適化すると、それが最適ないくつかのステップのために最適化します。図は、最適化手法の前と後の外観を示しています。下の図では、JVMの中で経験することができるレベルでJavaアプリケーションコード自体を最適化するために、いくつかのステップで行うことができる状況を説明しました。ただし、いくつかの最適化レベルのアセンブリコードに表示されます。

ここに画像を挿入説明

参考資料

いいえ国民の関心ん:データポーター関連情報を取得するためのリプライデータ構造/のJava / Scalaの/パイソン/ビッグデータテクノロジー/データウェアハウス/ PPTの資格
ここに画像を挿入説明

公開された86元の記事 ウォン称賛69 ビュー130 000 +

おすすめ

転載: blog.csdn.net/lp284558195/article/details/105220828
おすすめ