JavaCommand

javaコマンド
Javaアプリを実行させるコマンド。
一般的には、
JVM起動→クラスのロード→処理実行
の順。
javaコマンドで実行されるクラスは、
以下シグニチャを持つmainメソッドがあること。
+アクセス修飾子がpublicである。
+staticメソッドである。
+voidである。
+メソッド名が[main]である。
+複数文字列を引数に受け取れる。
ex
java hogepackage.HogeMain
※実行するクラス名の指定は、
 FQCN(パッケージ名/クラス名を含む完全修飾名)形式であること。

■クラスローダ&クラスパス
クラスローダによるクラスファイルの検索パス
bootstrapに指定されたパス→拡張(extension)クラスパス→ユーザ定義クラスパス

□bootstrapクラスパス
javaの基本的なシステムクラス郡。
java.lang.Objectとか、java.lang.Exceptionとか。
デフォルトでは、JREインストールディレクトリ/lib/rt.jarファイルがそう。

□拡張クラスパス
Extension Frameworkに基づく拡張フォルダ。
デフォルトでは、JREインストールディレクトリ/lib/extフォルダがそう。

□ユーザクラスパス
ユーザが新規に作成したクラスファイルたち。
環境変数CLASSPATHで指定。

■インタプリタと動的コンパイラ(適応型コンパイラ)
インタプリタによるjavaバイトコードの実行よりネイティブコードの実行の方が高速。
が、一回しか実行しないプログラムの場合、ネイティブコードへの変換がコストになる。
→javaHotSpotVM使えば、
 一定回数実行された処理のみネイティブコードに変化
 →処理速度の向上。

■javaメモリ構造
□ヒープ
JVM毎に1つだけ割り当てられ、生成された全てのスレッドから共有される可変長のメモリ領域。
ヒープ内には、
クラスローダがロードしたクラス情報、クラスから生成されたインスタンス等が格納される。
ヒープ領域の管理は、
ガベッジコレクタが担当し、未使用の領域を開放する。
領域の断片化、絶対的の不足などで、
このヒープ領域が不足した場合に、java.lang.OutOfMemoryErrorが発生する。
この例外は、
-Xmxオプションで最大ヒープサイズを拡張して対処できる。
が、
一般的に、ヒープサイズが大きくなるほど、
ガベッジコレクションによるプログラムの中断時間が長くなる。
また、
ヒープサイズを小さくした場合、
ガベッジコレクションによるプログラム中断時間は短くなるが、実行頻度が増える。

□スタック
スレッドごとに保持される固定長のメモリ領域。
メソッド・変数に関する情報がここに格納される。
スタック領域は、LIFOのスタックから構成される。
スタック領域がふそくすると、
java.lang.StackOverflowErrorが発生する。
この例外は、
-Xssオプションでのスタックサイズの調整で対処できる。


ref:
http://www.stackasterisk.jp/tech/java/javaCommand01_01.jsp

tag : java

2009-06-10 00:20 : __lang__java : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud