6

時間の経過とともに、Sun の JVM と JIT はかなりスマートになりました。マイクロ最適化が必要であると以前はよく知られていたことは、あなたに代わって処理されるため、もはや必要ありません。

たとえば、以前は、可能なすべてのクラスを final としてマークする必要があったため、JVM はできるだけ多くのコードをインライン化しました。ただし、現在、JIT は、実行時にロードされるクラスに基づいてクラスが final であるかどうかを認識しており、クラスをロードして元のクラスを final 不可にする場合、メソッドのインライン化を解除し、そのマークを解除します。最後の。

JVM または JIT は、他にどのようなスマートなマイクロ最適化を行いますか?

編集: これをコミュニティ wiki にしました。時間をかけて集めていきたいと思います。

4

3 に答える 3

6

それは印象的です。これらはすべてcan'tC++ で行うことです (確かに Java と同じ程度です)。Java の初期のバージョンは、これらの機能がないために「遅い」という評判が始まったことに注意してください。時間の経過とともに大幅に改善され続けています。これはまだ大きな研究分野です。

于 2009-07-17T17:25:15.607 に答える
4

Oracle には、Hotspot JVM で使用されるパフォーマンス技術に関する wiki があります。

于 2009-07-28T05:31:47.157 に答える
3

Java は可能な限りインライン化が賢い

  • インライン コードは、実行時にのみ使用できるか、動的に生成されます。
  • インライン仮想メソッド (一度に 2 つまで)
  • インライン化されたメソッドとそれらがインライン化されたメソッドに対してエスケープ分析を実行します。(C++ で行うのははるかに難しい)
于 2009-07-17T18:51:03.733 に答える