请原谅我,如果这是一个无知的问题,我不是一个好奇的专家程序员。是否有可能从正在运行的程序中读取工作内存,比如一个类的实例?
我知道你可以做println(theInstance.getClass());
这样的事情,它会给你实例的内存地址(我假设它是什么)。我想知道是否可以做byte[]memory = theInstance.getClass().getMemory(); println(toString(memory));
这样的事情我知道这些都是为了说明而已。但
答案 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
。