访问运行JVM原始内存

时间:2009-12-03 05:04:01

标签: java jvm memory-dump

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

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

3 个答案:

答案 0 :(得分:3)

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

但你为什么要这样做?

答案 1 :(得分:2)

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

从您的问题来看,您不希望这些内容成为什么样的内容。如果您想了解Java如何在内存中表示对象,请阅读VM specification。然后,the Java virtual machine does not mandate any particular internal structure for objects

答案 2 :(得分:0)

我最近没有看过这个,但如果在Linux上你可以寻找/阅读/proc/PID/mem