JVM のゼロ基礎から高度な戦闘まで、Java プログラマが知っておくべきオブジェクト構造
JVM のゼロ基礎から高度な戦闘まで、Java プログラマが知っておくべきオブジェクト構造
序文
JVM のゼロ基礎から高度な戦闘まで、Java プログラマが知っておくべきオブジェクト構造
JAVAオブジェクトのメモリレイアウト
- オブジェクトヘッダーは、オブジェクトのメタデータ情報を保存するために使用されます。
- マーク ワード データの一部の長さは、32 ビットおよび 64 ビットの仮想マシンではそれぞれ 32 ビットと 64 ビットであり (圧縮ポインターは有効になっていません)、ハッシュ値などのオブジェクト自体のランタイム データを格納します。Mark Word は通常、より多くのデータ情報を保存し、独自の記憶領域を再利用するために、非固定データ構造として設計されています。
- 型ポインタはそのクラス メタデータ ポインタを指し、オブジェクトがどのクラス インスタンスに属しているかを決定するために使用されます。
- インスタンスデータ
- インスタンス データには、さまざまなフィールドの内容など、実際に有効なデータが格納されます。各フィールドの割り当て戦略は、longs/doubles、ints、shorts/chars、bytes/boolean、oops (通常のオブジェクト ポインター) であり、同じ幅のフィールドは常に割り当てられるので、後でデータを取得するのに便利です。親クラスによって定義された変数は、サブクラスによって定義された変数の前に表示されます。
- パディングを揃える
- 位置合わせパディングは単なるプレースホルダーであり、必須ではありません
要約する
この記事では、JVMのゼロ基礎から高度な実戦まで、Javaプログラマが知っておくべきオブジェクト構造の全内容を紹介します。今後も更新していきます。気に入っていただけましたら、クリックしてフォローしてください。JVMシリーズはこれからも続きます。更新しました。