1

これが無知な質問である場合、私を許してください. 実行中のプログラム内から、クラスのインスタンスなどの作業メモリを読み取ることは可能ですか?

私はあなたが何かをすることができることを知っています、println(theInstance.getClass());そしてそれはあなたにインスタンスのメモリアドレスを与えるでしょう(私はそれが何であるかを仮定しています)。私はそれがbyte[]memory = theInstance.getClass().getMemory(); println(toString(memory));すべて構成されていることを知っているようなことをすることができるかどうか疑問に思っていますが、説明するだけです。

4

3 に答える 3

3

標準のJavaAPIを使用していません。ただし、を介してメモリにアクセスできますsun.misc.Unsafe(このクラスのインスタンスを取得するには、おそらくリフレクションを使用する必要があります)。もちろん、これはJNIを介して行うこともできます。

しかし、なぜあなたはしたいのですか?

于 2009-12-03T05:29:20.647 に答える
2

いいえ、getClass() の結果を出力しても「メモリ アドレス」は得られません。クラスの文字列表現を提供します(「クラスアーガイル」のようなものになります)。

あなたの質問からは、そのようなものの内容が何であると予想されるかは明らかではありません. Java がメモリ内のオブジェクトを表現する方法を理解したい場合は、VM 仕様をお読みください。繰り返しますが、Java 仮想マシンはオブジェクトの特定の内部構造を強制しません

于 2009-12-03T05:11:14.750 に答える