【发布时间】:2009-12-03 05:04:00
【问题描述】:
如果这是一个无知的问题,请原谅我,我不是一个专业的程序员,只是好奇。是否可以从正在运行的程序内部读取工作内存,例如类的实例?
我知道您可以执行println(theInstance.getClass()); 之类的操作,它会为您提供实例的内存地址(我假设它是这样的)。我想知道是否可以做类似byte[]memory = theInstance.getClass().getMemory(); println(toString(memory)); 之类的事情,我知道这都是虚构的,只是为了说明。
【问题讨论】:
-
有可能。但我不认为这对你有多大好处。这将是虚拟内存地址。所以它只在那个 JVM 内部相关——真的是那个过程。
-
地址不是很有用的原因是执行 gc 时对象可以移动。基本上你不需要知道 Java 中这种级别的信息。
-
感谢您的回复。我想我没有考虑任何特定用途,只是想知道是否可能。我刚刚意识到我正在考虑打印一个数组。当我在其中包含一个类实例的数组上执行 println() 时,我会在 @ 之后得到一个地址,如下所示:[0] sketch_dec03a$MyClass@141fab6 这就是来自 Processing (processing.org) 的方式,我得到我所有的 Java 经验。
标签: java jvm memory-dump