1

私はCおよびC++の初心者であり、JVMTIの使用方法がよくわかりません。Javaオブジェクトの物理メモリ位置(16進数)を取得したい。出来ますか?「このプロファイラーなどから取得する」などの回答は取得したくありません...これまでのところ、Linuxターミナルでこのコマンドを使用しています。

java -showversion -agentpath:../CPrg/DLL/bin/Debug/libDLL.so SimpleMemAlloc

libDLL.soは、Javaアプリケーションで実行するcを使用して作成しているライブラリです。それは実際に機能し、私のコードで実行されますが、必要なデータを取得する方法がわかりません。

たとえば、私は次の単純なコードを使用しています。

public class SimpleMemAlloc{

    Object [] oarray = new Object[10000];

    public static void main(String args []){
        Object [] o= new Object[100];
        for (int i= 0; i<100; i++){
        o[i] = new Integer [10000];
        }
    }
}

作成するすべての新しい整数配列のメモリ位置(0x ...)を取得したい... jvmtiを使用して素敵なサンプルコードを取得できれば、とてもうれしいです。

4

1 に答える 1

0

オブジェクトが上書きされない場合、hashCode()デフォルトの実装はオブジェクトの内部アドレスを整数として返します。繰り返しますが、これはこれを行う最良の方法ではないかもしれません。

これは通常、オブジェクトの内部アドレスを整数に変換することによって実装されますが、この実装手法は JavaTM プログラミング言語では必要ありません。

詳細については、ここをクリックしてください

于 2011-12-28T18:21:29.207 に答える