Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问正在运行的JVM原始内存_Java_Jvm_Memory Dump - Fatal编程技术网

Java 访问正在运行的JVM原始内存

Java 访问正在运行的JVM原始内存,java,jvm,memory-dump,Java,Jvm,Memory Dump,如果这是一个无知的问题,请原谅,我并不是一个专业的程序员,只是好奇而已。是否可以从正在运行的程序中读取工作内存(例如类的实例) 我知道您可以执行类似于println(instance.getClass())的操作,它将为您提供实例的内存地址(我假设它是这样的)。我想知道是否可以做类似于byte[]memory=instance.getClass().getMemory()的事情;println(toString(内存))我知道这些都是虚构的,只是为了举例说明。不,打印getClass()的结果不

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


我知道您可以执行类似于
println(instance.getClass())的操作,它将为您提供实例的内存地址(我假设它是这样的)。我想知道是否可以做类似于
byte[]memory=instance.getClass().getMemory()的事情;println(toString(内存))我知道这些都是虚构的,只是为了举例说明。

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


从你的问题来看,还不清楚你期望这样一件事的内容是什么。如果您想了解Java如何表示内存中的对象,请阅读。然后再次强调,.

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


从你的问题来看,还不清楚你期望这样一件事的内容是什么。如果您想了解Java如何表示内存中的对象,请阅读。再次强调,.

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


但是为什么要这样做呢?

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


但是你为什么要这么做呢?

我最近没有看过这个,但是如果在Linux上你可以查找/读取
/proc/PID/mem
我最近没有看过这个,但是如果在Linux上你可以查找/读取
/proc/PID/mem
这是可能的。但我认为这对你没什么好处。这将是虚拟内存地址。因此,它只与JVM内部相关——实际上是该进程。地址不太有用的原因是,当执行gc时,对象可以移动。基本上,您不需要知道Java中的这一级别的信息。感谢您的回复。我想我没有任何具体的用途,只是想知道这是否可能。我刚刚意识到我在考虑打印一个数组。当我在一个包含类实例的数组上执行println()时,我会在@like so:[0]sketch_dec03a之后得到一个地址$MyClass@141fab6这是从Processing(Processing.org)获得的,通过这种方式我获得了所有的Java体验。但我认为这对你没什么好处。这将是虚拟内存地址。因此,它只与JVM内部相关——实际上是该进程。地址不太有用的原因是,当执行gc时,对象可以移动。基本上,您不需要知道Java中的这一级别的信息。感谢您的回复。我想我没有任何具体的用途,只是想知道这是否可能。我刚刚意识到我在考虑打印一个数组。当我在一个包含类实例的数组上执行println()时,我会在@like so:[0]sketch_dec03a之后得到一个地址$MyClass@141fab6这是从Processing(Processing.org)获得的,通过这种方式,我获得了所有Java经验。@Tom-实际上,我不认为JNI允许您获得原始内存本身。相反,它提供了获取和设置(例如)对象字段的方法。(如果您知道JNI字段ID的内部表示是什么,也许您可以“冲破”抽象障碍…@Tom-实际上,我不认为JNI允许您获取原始内存本身。相反,它提供了获取和设置(例如)对象字段的方法。(如果您知道JNI字段ID的内部表示是什么,也许您可以“冲破”抽象障碍…)