プロが教えるわが家の防犯対策術!

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

A 回答 (3件)

通常のJava VMではネイティブ・コードをファイルに保存することはしていません。

ファイルとしてはクラスファイル(.class)で、HotSpotなどでは実行時にメモリ上で必要に応じてコンパイルして実行します。

この回答への補足

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

補足日時:2006/02/10 00:34
    • good
    • 0

HotSpot は Java VM に組み込まれて動くものです。

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

 「ネイティブコードはメモリの中にあるだけでどこにも書き出」さない、のですね!

「メモリの中にあるだけ」

的確なアドバイスありがとうございます!

お礼日時:2006/02/24 05:31

HotSpotはSUN JRE 1.3以降で組み込まれている機能だと記憶しています。


少なくとも知る限りのJava VMでネイティブ・コードをファイルに吐き出して再利用するものはありません。
# OSのスワップファイルに含まれる可能性は否定しませんがVMの機能じゃない

Javaコードをネイティブ実行形式ファイルにするものとしてはGCCや組み込み環境用のJavaコンパイラで幾つかあるくらいだと思います。
# これらはJavaソースから実行形式を作るコンパイラで
# 実行にはGCなどをサポートするライブラリが必要になる
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!