Hotspot仮想マシン、オブジェクトのアクセス先

626 ワード

オブジェクトのメモリレイアウトにおけるオブジェクトヘッダのタイプポインタ部分の説明のように、 Javaプログラムはスタック上のreferenceデータによってスタック上の特定のオブジェクトを操作し、オブジェクトのアクセスは仮想マシンの特定の実装に依存します.現在主流のアクセス方法は2種類あります.
  • ハンドル
  • ダイレクトポインタ
  • ハンドル
    ハンドルアクセスを使用すると、Javaスタックは常にハンドルプールとしてメモリを分割し、referenceにはオブジェクトのハンドルアドレスが格納され、ハンドルにはオブジェクトインスタンスデータとタイプデータのそれぞれの具体的なアドレス情報が含まれています.
    ダイレクトポインタ
    直接ポインタアクセスを使用すると、referenceに格納されている直接がオブジェクトアドレスです.
    2つの方法にはそれぞれ利点があり、ハンドルを使用してアクセスする利点はreferenceに格納されている安定したハンドルアドレスであり、オブジェクトが移動されると(ゴミ回収時によく発生する)ハンドル内のインスタンスデータポインタのみが変更され、reference自体は変更する必要はありません.直結ポインタを使用してアクセスする利点は、ポインタの位置決めにかかる時間のオーバーヘッドを節約する高速さです.