• ベストアンサー

JSPやServletはアクセス後最終的にサーバOSネイティブファイルでサーバに保存されるのか

 Servletはアップロード時にすでにclassファイルでサーバに保存、JSPはアップロード時にjspファイルで1回目のアクセス時にjavaファイルが作成(そしてサーバに保存)されさらにclassファイルが作成(そしてサーバに保存)されることは理解しました。  classファイルとなったあとさらにHotSpot VMなどでサーバOSネイティブファイル(Windowsサーバならexe形式?)にコンパイルされサーバに保存されるのかどうかが分かりません。  アドバイスよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

HotSpot は Java VM に組み込まれて動くものです。で、ネイティブコードはメモリの中にあるだけでどこにも書き出しません。(というか、書き出していたとしてもその仕様が公開されていません。普通はファイルの読み書きは遅いのでわざわざそんなことしないとは思いますが)。

noname#179638
質問者

お礼

 「ネイティブコードはメモリの中にあるだけでどこにも書き出」さない、のですね! 「メモリの中にあるだけ」 ↑ 的確なアドバイスありがとうございます!

その他の回答 (2)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.3

HotSpotはSUN JRE 1.3以降で組み込まれている機能だと記憶しています。 少なくとも知る限りのJava VMでネイティブ・コードをファイルに吐き出して再利用するものはありません。 # OSのスワップファイルに含まれる可能性は否定しませんがVMの機能じゃない Javaコードをネイティブ実行形式ファイルにするものとしてはGCCや組み込み環境用のJavaコンパイラで幾つかあるくらいだと思います。 # これらはJavaソースから実行形式を作るコンパイラで # 実行にはGCなどをサポートするライブラリが必要になる

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

通常のJava VMではネイティブ・コードをファイルに保存することはしていません。ファイルとしてはクラスファイル(.class)で、HotSpotなどでは実行時にメモリ上で必要に応じてコンパイルして実行します。

noname#179638
質問者

補足

 rinkun様、ご回答ありがとうございます。  通常のJava VMではネイティブ・コードをファイルに保存することはしていないことは理解しました。  HotSpotなどで.classを実行時にメモリ上で必要に応じてコンパイルして実行した場合、部分コンパイル後のネイティブコードは2回目以降のアクセス時のために保存されるのかどうかが分かりません。  ここでいう「通常のJava VM」と「HotSpot」は別物なのでしょうか?  アドバイスいただける方がおりましたらどうかよろしくお願いいたします。

関連するQ&A