1. オブジェクト ヘッダーは MarkWord と KlassPoint に分かれています。
MarkWord (マーク フィールド): 年齢やロックされたマークの位置情報の代わりに、オブジェクトの HashCode がデフォルトで保存されます。オブジェクトの状態に応じて独自の記憶領域を再利用します。つまり、MarkWord に保存されているデータは、ロック マークの位置が変わると変化します。
KlassPoint (タイプ ポインター): オブジェクトのクラス メタデータへのポインター仮想マシンはこのポインターを使用して、オブジェクトがどのクラスに属しているかを判断します。
2. インスタンス データ。この部分には主にデータ情報と親クラス情報が格納されます。
3. 位置合わせの充填。仮想マシンではオブジェクトの開始アドレスが 8 バイトの整数倍である必要があるため、パディング データはバイト アライメントのためだけに存在する必要はありません。
空のオブジェクトは、位置合わせとパディングにより 8 バイトを占めます。位置合わせとパディングを 8 バイト未満にすると、自動的に完了することができます。
例
public class TestStudent { public static void main(String[] args) { int n = 10; //栈存储 int m = 10; //栈存储 Student stu = new Student(); //属性赋值 stu.name="张三"; System.out.println(stu.name); //null 张三 System.out.println(stu.age); //0 //调用 String name = "ls"; //局部变量(常量池) String aaaa="ls"; String pwd = "123"; stu.login(name,pwd); System.out.println("name:"+name); //ls System.out.println("执行"); } } class Student { // 属性 String name; int age; //用户登录 // String userName; // String pwd; public void login(String userName,String pwd){ System.out.println(userName+"===="+pwd); //ls 123 } public void show() { System.out.println("姓名:" + name + ",年龄:" + age); } }
以上がメモリ内の Java オブジェクトの構造は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。