私はJVMメモリモデルを読み、次のことと混同しました。
- JVMは.classインスタンスをメモリに保存しますか?はいの場合、どのエリアで。
- クラスがロードされるとすぐに、JVMがマシンレベルのコードを生成し、マシンコード命令の実行を開始すると、オブジェクトのみがヒープ上に作成され、メソッド領域にデータが入力されます。
- perm genなどの領域には、バイトコードまたはマシンレベルのコードが格納されますか?
- パーマ生成とメソッド領域
このトピックについて助けていただければ幸いです。
ありがとう。
1).classファイルはロード時にpermgenメモリ領域に保存されます。
2)HEAP上のオブジェクトは、プログラムの実行中に作成されます。明示的に作成すると、ロード時ではなく作成されます。JVMはメソッドを「怠惰に」コンパイルします。つまり、各メソッドのコンパイルをトリガーするメソッドのコンパイル済みマシンコードの代わりに小さなスタブを発行します。これは、使用されていないメソッドがコンパイルされないことを意味します。
3)perm genはバイトコードを格納します(.classファイルがロードされます)。マシンレベルのコードについてはわかりません。
JVMは.classインスタンスをメモリに保存しますか?はいの場合、どの領域に保存しますか
PermGen
クラスが読み込まれるとすぐにそうですか
を読まずにクラスをロードできます.class
、JVMはマシンレベルのコードを生成し、マシンコード命令の実行を開始します
バイトコードは、しばらくしてからネイティブマシンコードに解釈されるか、コンパイルされる可能性があります。
perm genなどの領域には、バイトコードまたはマシンレベルのコードが格納されますか?
両方。それらは不可分です。