2016-05-12 2 views
1

識別子または変数名はどこにjavaに格納されますか?オブジェクトがヒープに格納され、変数が変数の型とスコープに応じてヒープまたはスタックに格納されることを理解しています。プログラムをデバッグしたり書き込んだりして、確認することはできますか?Java-変数名または識別子はどこに格納されますか?スタックまたはヒープ?

おかげ&よろしく

答えて

2

フィールドの名前は以前のPermGen now-Metaspaceのクラスメタデータの一部として格納されています。

配列要素には名前はありません。数値のみです。 (Cue Patrick McGoohan.)

メソッド名とコンストラクタパラメータ、ローカル変数、ハンドラパラメータは、そのオプションが選択されている場合、クラスファイル内のデバッグシンボル情報にのみ格納されます。コンパイラはバイトコードで使用されているスタックフレームのスロット番号にJVMをマップしているため、JVMでは必要ありません。

0

変数名は、永久的な生成方法の領域に格納されます。オブジェクトは常にヒープに格納されますが、スタックに格納されているオブジェクト参照です。

+1

私はここでフィールド名ではなくフィールド名を質問しています – TheLostMind

1

変数名は他のクラスのメタデータとともに「メソッド領域」(permgenの一部)に格納されます。

メソッド領域と呼ばれるクラスメタデータを保持する特別な領域があります。これはpermgenの一部であり、現在はメタスペースに移動されています。

+0

クラスメタデータと変数名がヒープに格納されていると言っていますか? – Jeet

+0

私の答えを更新しました。 @JeetendraChoudhary – TheLostMind

+0

ありがとう、このメタスペースはどこに好奇心が強いのですか?そしてそれは重要ですか、私はそれが何らかの形で開発者にとって有益か、事を知るだけでよいことを意味します。 – Jeet

関連する問題