この記事は何?
Javaの内部とかに全然詳しくないプログラマがHotSpot VMについて調べた話
経緯
- Stringの内部実装について調べる
-
@HotSpotIntrinsicCandidate
<- なんだァ?てめェ…… - HotSpot VMなるものが関係してるらしいので調べる
ざっくり言うと
HotSpot VM: HotSpotを実装したJVM
HotSpot: オラクルのJVM高速化記述
非常に粗くまとめると「よく使われる部分をキャッシュしておき、Javaの実行を早くする技術」のこと
経験的に少数の処理がよく呼び出され、そのほかはあんまり呼ばれない(例えば処理全体の2割が8割の実行時間を占める、など)。そのためその2割をキャッシュしておけば早くなる、と言うことらしい
もうちょっとだけ詳しく
Javaを実行する際、人間の書いたJavaコードはバイトコード(JVM語)に変換され、そのJVM語をJVMインタプリタが解釈してプログラムが実行される。
HotSpotがなければヒープ領域にあるJavaコードをJVMが逐一解釈して処理が実行されるが、これでは処理速度が遅いと言う問題がある。
HotSpotは同じバイトコードがJVMに何度も呼ばれた場合、その部分を機械語にコンパイルしてキャッシュしておく。こうして、プログラムの中のよく呼び出される部分の処理が高速化される。
詳細は以下の参考記事
https://www.atmarkit.co.jp/fjava/special/jvmhistory/jvmhistory01.html
https://www.atmarkit.co.jp/ait/articles/0403/11/news096.html
https://ja.wikipedia.org/wiki/HotSpot