1

如果这是一个无知的问题,请原谅我,我并不是一个专业的程序员,只是好奇。是否可以从正在运行的程序内部读取工作内存,例如类的实例?

我知道你可以做类似的事情println(theInstance.getClass());,它会给你实例的内存地址(我假设就是这样)。我想知道是否可以做一些byte[]memory = theInstance.getClass().getMemory(); println(toString(memory));我知道的事情,但只是为了说明。

4

3 回答 3

3

不使用标准 Java API。sun.misc.Unsafe但是,您可以通过(您可能需要使用反射来获取此类的实例)访问内存。当然,您也可以通过 JNI 执行此操作。

但你为什么想要?

于 2009-12-03T05:29:20.647 回答
2

不,打印 getClass() 的结果不会给出“内存地址”;它给出了一个类的字符串表示(类似于“class Argyle”)。

从您的问题来看,尚不清楚您对此类内容的期望是什么。如果您想了解 Java 如何表示内存中的对象,请阅读VM 规范。再说一遍,Java 虚拟机不要求对象有任何特定的内部结构

于 2009-12-03T05:11:14.750 回答
0

我最近没看过这个,但如果在 Linux 上你可以 seek/read /proc/PID/mem

于 2009-12-04T03:02:10.317 回答