- ベストアンサー
JSPやServletはアクセス後最終的にサーバOSネイティブファイルでサーバに保存されるのか
Servletはアップロード時にすでにclassファイルでサーバに保存、JSPはアップロード時にjspファイルで1回目のアクセス時にjavaファイルが作成(そしてサーバに保存)されさらにclassファイルが作成(そしてサーバに保存)されることは理解しました。 classファイルとなったあとさらにHotSpot VMなどでサーバOSネイティブファイル(Windowsサーバならexe形式?)にコンパイルされサーバに保存されるのかどうかが分かりません。 アドバイスよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
HotSpot は Java VM に組み込まれて動くものです。で、ネイティブコードはメモリの中にあるだけでどこにも書き出しません。(というか、書き出していたとしてもその仕様が公開されていません。普通はファイルの読み書きは遅いのでわざわざそんなことしないとは思いますが)。
その他の回答 (2)
- rinkun
- ベストアンサー率44% (706/1571)
HotSpotはSUN JRE 1.3以降で組み込まれている機能だと記憶しています。 少なくとも知る限りのJava VMでネイティブ・コードをファイルに吐き出して再利用するものはありません。 # OSのスワップファイルに含まれる可能性は否定しませんがVMの機能じゃない Javaコードをネイティブ実行形式ファイルにするものとしてはGCCや組み込み環境用のJavaコンパイラで幾つかあるくらいだと思います。 # これらはJavaソースから実行形式を作るコンパイラで # 実行にはGCなどをサポートするライブラリが必要になる
- rinkun
- ベストアンサー率44% (706/1571)
通常のJava VMではネイティブ・コードをファイルに保存することはしていません。ファイルとしてはクラスファイル(.class)で、HotSpotなどでは実行時にメモリ上で必要に応じてコンパイルして実行します。
補足
rinkun様、ご回答ありがとうございます。 通常のJava VMではネイティブ・コードをファイルに保存することはしていないことは理解しました。 HotSpotなどで.classを実行時にメモリ上で必要に応じてコンパイルして実行した場合、部分コンパイル後のネイティブコードは2回目以降のアクセス時のために保存されるのかどうかが分かりません。 ここでいう「通常のJava VM」と「HotSpot」は別物なのでしょうか? アドバイスいただける方がおりましたらどうかよろしくお願いいたします。
お礼
「ネイティブコードはメモリの中にあるだけでどこにも書き出」さない、のですね! 「メモリの中にあるだけ」 ↑ 的確なアドバイスありがとうございます!