0

私が知っているように、JIT はバイトコードをより高速に実行できるネイティブ マシン コードにコンパイルします。コードを解釈するとは、コードを実行することを意味します。しかし、私は反対の答えを見つけました!誰か説明してくれませんか...よろしくお願いします

4

1 に答える 1

2

バイトコードシーケンスのマシンコードを取得したら(ご存知のとおり、解釈よりも高速である必要があります)、そのバイトコードシーケンス(*)を解釈し続けることは意味がありません。コンパイルがバックグラウンドで実行されている間、またはまだ開始されていないときに解釈する方が便利です(何らかの理由で-一般的なケースは、コンパイルする価値があると見なされるほど頻繁にコードが実行されていない場合です)。

(*)実際、一部のJITコンパイラーは、マシンコードを非常に特殊化しているため、一部のコードパスまたは入力に対して無効であり、それらが発生した場合は解釈/再コンパイルにフォールバックする必要があります。また、他のJITコンパイラーでさえ、コードを新たにコンパイルすることがあります。これにより、一時的に解釈に戻る場合とならない場合があります。しかし、概して、コードが適用され、より高速である場合(常にそうであるはずです)、それを使用しない意味はありません。

于 2012-11-14T19:15:29.193 に答える