Java 仮想マシン学習 - オブジェクト アクセス

黄舟
リリース: 2017-03-18 17:51:44
オリジナル
1493 人が閲覧しました

オブジェクトへのアクセスには、Java スタック、Java ヒープ、メソッド領域の 3 つのメモリ領域が関係します。

例えば以下のコード:

Object objectRef = new Object();
ログイン後にコピー

このコードがメソッド本体にあるとすると、「Object objectRef」の部分がJavaスタックのローカル変数に反映され、参照型のデータとして現れます。 「new Object()」部分は Java ヒープに反映され、オブジェクト型のすべてのインスタンス データ値を格納する構造化メモリを形成します。このメモリの長さは、特定の型と実装されるオブジェクト メモリ レイアウトによって異なります。仮想マシンは修正されていません。さらに、Java ヒープには、このオブジェクト タイプのデータ (オブジェクト タイプ、親クラス、実装されたインターフェイス、メソッドなど) を見つけることができるアドレス情報も含まれている必要があります。これらのデータ タイプはメソッド領域に格納されます。

参照タイプは、Java 仮想マシンの仕様でオブジェクトを指す参照アドレスを規定するだけであり、Java ヒープ内のオブジェクトの場所にアクセスするためにこの参照を配置する方法を定義するものではありません。そのため、異なる仮想マシンが実装されます。アクセス方法はさまざまですが、ハンドルを使用する方法とダイレクト ポインタを使用する方法の 2 つが主流です。访ハンドルアクセス方法

: Java パイルはハンドルプールとしてメモリの一部に分割され、オブジェクトのハンドルアドレスが参照に格納され、ハンドルにはオブジェクトインスタンスデータとタイプの特定のアドレス情報が含まれます。データ型のデータ。

ポインタアクセス方式

: 参照変数にはオブジェクトのアドレスが直接格納され、Java ヒープオブジェクトの一部にはオブジェクトインスタンスデータが格納され、他の部分にはオブジェクトタイプデータが格納されます。

ハンドル アクセス メソッドを使用する最大の利点は、オブジェクトが移動されるときに、インスタンス データ ポインタのみが参照に格納されることです。ハンドルは変更する必要がありますが、リファレンスは変更する必要はありません。ポインタ アクセス方法を使用する最大の利点は、仮想マシンに関する限り、2 番目の方法 (直接ポインタ アクセス) を使用するため、ポインタの位置決めにかかる時間のオーバーヘッドが節約されることです。

上記は Java 仮想マシン学習 - オブジェクト アクセスの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

関連記事:

Java仮想マシンを詳しく解説

Java仮想マシンを深く理解

Java仮想機械学習 - クラスローディングの仕組み

Java仮想マシン学習 - オブジェクトメモリ配分とリサイクル

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート