Interstage Application Serverにおいて、Javaアプリケーション起動直後の性能が良くないのはなぜですか?

Javaアプリケーション起動直後の性能が良くないのはなぜですか?
C言語やCOBOL などで作られたプログラムは、プログラムを実行する前に、コンパイラによって、プログラムが動作するプラットフォームに合わせて、実行形式(そのプラットフォームで動作する機械命令)を事前に作成します。アプリケーションを実行するときは、機械命令に変換された実行形式で最初から実行されますので、起動時から高速に実行されます。
一方、Javaは、アプリケーションを起動したあとに、プログラム(クラスファイル)を読み込み、実行が行われます。プログラムの実行は、インタプリタで1命令ずつ、命令の意味を解釈実行するか、コンパイラ(*1)によって機械命令に変換してから実行されます。このため次の理由から、Javaアプリケーション起動直後の性能は良くありません。
  • 実行時にプログラムを読み込むため、プログラムのロードとチェックにオーバーヘッドが発生する

  • 実行時にコンパイル処理を行うため、オーバーヘッドが発生する

  • アプリケーション開始直後は、機械命令がそろっていない

(*1)
C言語やCOBOLのコンパイラと区別して、アプリケーション実行時にコンパイルすることから、動的コンパイラと呼ばれます。

関連FAQ:
FAQ11883 「Interstage Application Serverにおいて、運用開始前に「暖気運転」が必要なのはなぜですか?

製品・サービス区分 Interstage
製品・サービス情報
対象製品 Interstage Application Server
バージョン V9, V8, V7, V6, V5
プラットフォーム Windows, Solaris, Linux
アンサー種別 技術サポート
このページの先頭へ