ホームページ >Java >&#&チュートリアル >Java 仮想マシンでのオブジェクト アクセスの詳細な紹介 (図)
この記事では、主に Java 仮想マシンの オブジェクト アクセスに関する関連情報を紹介します。必要な方は、
Java 仮想マシンのオブジェクト アクセスの詳細な説明を参照してください。
オブジェクト アクセスには、Java スタック、Java ヒープ、これらが含まれます。 3 つのメモリ領域はメソッド領域です。
例えば以下のコード:
Object objectRef = new Object();
このコードがメソッド本体にあるとすると、「Object objectRef」部分がJavaスタックのローカル変数に反映され、参照型のデータとして現れます。 「new Object()」部分は Java ヒープに反映され、特定の型と仮想によって実装されるオブジェクト メモリ レイアウトに応じて、Object クラス 型のすべてのインスタンス データ値を格納する構造化メモリが形成されます。マシン、このブロックのメモリの長さは固定されていません。さらに、Java ヒープには、このオブジェクト タイプのデータ (オブジェクト タイプ、親クラス、実装された インターフェース、メソッドなど) を見つけることができるアドレス情報も含まれている必要があります。これらのデータ タイプはメソッド領域に格納されます。
Java 仮想マシン仕様の参照タイプは、オブジェクトを指す参照アドレスを規定するだけであり、この参照が Java ヒープ内のオブジェクトの場所にどのようにアクセスされるかを定義するものではありません。そのため、さまざまな仮想マシンがそのアクセスを実装します。方法は異なる場合がありますが、ハンドルを使用する方法とダイレクト ポインターを使用する方法の 2 つの主流の方法があります。访ハンドルアクセス方法
: Java パイルはハンドルプールとしてメモリの一部に分割され、オブジェクトのハンドルアドレスが参照に格納され、ハンドルにはオブジェクトインスタンスデータとタイプの特定のアドレス情報が含まれます。データ型のデータ。
ポインタアクセス方法: 参照変数はオブジェクトのアドレスを直接格納しますが、Java ヒープオブジェクトの一部はオブジェクトインスタンスデータを格納し、他の部分はオブジェクトタイプデータを格納します。
ハンドル アクセス メソッドを使用する最大の利点は、オブジェクトが移動するときに、インスタンス データ ポインターを変更するだけで済むことです。ハンドルですが、参照は変更する必要はありません。ポインタ アクセス方法を使用する最大の利点は、仮想マシンに関する限り、2 番目の方法 (直接ポインタ アクセス) を使用するため、ポインタの位置決めにかかる時間のオーバーヘッドが節約されることです。
以上がJava 仮想マシンでのオブジェクト アクセスの詳細な紹介 (図)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。