- PR -

JVMの動き

1
投稿者投稿内容
J
会議室デビュー日: 2006/06/30
投稿数: 6
投稿日時: 2006-07-05 13:07
public class A{
public static boolean Check(String str){
//チェック処理
  return true;
}
}
という部品がありA.Check("20051010")と呼び出した場合のJVMの動きについて質問です。
@JVM起動…ヒープ領域を確保する
AAスレッド起動…JVMスタック領域を確保
Bstaticメソッド呼び出し…初回アクセス時はAクラスをメソッドエリア(実行時コンスタントプール)にロードする
CJVMスタックにフレーム生成…フレーム内のローカル変数領域にstrの参照を保持する(実体はヒープ領域にある。プリミティブ型の場合はスタック領域に実体も保持)その時フレーム内にクラスファイルへの参照も保持?
Dチェックメソッド実行…ヒープ領域を参照しながらチェックが実行される

全体の処理としてはこんな感じだと思います。
【質問】
Dについて…実際に処理されるコードはフレームから参照するメソッドエリアのクラスファイル情報で処理されるのでしょうか?それともフレーム内にメソッドがありそのコードが実行されるのでしょうか?メソッドエリアとフレームの参照関係がよくわかりません。Cでフレームを生成した時点でクラスファイルへの参照も保持しているのでしょうか?また、フレーム内のオペランドスタックはどのような役割をしているのでしょうか?
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2006-07-05 13:50
こっちは解決したんですか?
_________________
己への戒め

「活動的な馬鹿より恐ろしいものはない」 by ゲーテ
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2006-07-06 10:41
Jさん、こんにちは。

Java VMを実装したい方には、O'REILLY "Java Virtual Machine"
を読んでみるのをお勧めしています。オーム社から邦訳も出てますよ。
1

スキルアップ/キャリアアップ(JOB@IT)