[解決済み] なぜJVMはJITコンパイルされたコードをキャッシュしないのですか?
2022-10-01 19:14:48
質問
Sunからの標準的なJVM実装は、コードが数回実行された後、ネイティブに近い実行速度を得るために、バイトコードにいくつかの非常に洗練された最適化を適用します。
問題は、なぜこのコンパイルされたコードは、同じ関数/クラスの後続の使用中に使用するためにディスクにキャッシュされないのか、ということです。
現状では、プログラムが実行されるたびに、JIT コンパイラーはコードのプリコンパイルされたバージョンを使用するのではなく、新たに起動されます。この機能を追加することは、バイトコードが本質的に解釈されるとき、プログラムの最初の実行時間に重要なブーストを追加しないでしょうか?
どのように解決するのですか?
MYYN が投稿したリンクのカット アンド ペーストに頼ることなく、私は、JVM が実行する最適化が静的ではなく、コード パターンと同様にデータ パターンに基づいた動的であるためであると推測します。これらのデータ パターンは、アプリケーションの寿命の間に変更される可能性が高く、キャッシュされた最適化が最適でない状態になります。
そのため、保存された最適化がまだ最適であるかどうかを確立するメカニズムが必要になります。
関連
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
セミコロン期待値エラー解決
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
CertificateException: XXXに一致するサブジェクトの代替DNS名が見つかりません 解決策
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] 特定のUnicode文字を含むコメントでのJavaコードの実行が許可されているのはなぜですか?
-
[解決済み] キャッシュフレンドリーコードとは何ですか?
-
[解決済み] Java JITは、JDKのコードを実行するときに不正をするのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
Javaでよくある構文エラー
-
javaの非静的メソッドを静的に参照することができない
-
無効なメソッド宣言
-
Javaジェネリックを1つの記事で
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.