我正在寻找一种从预先写入的内存位置读取数据的方法。有没有办法在运行 Windows 的计算机上用 Java 执行此操作?
最佳答案
Java 提供了计算机的“抽象”,因此称为“Java 虚拟机”(JVM)。无论底层硬件或操作系统如何,这个 JVM(理论上)都是相同的。所以(AFAIK)不可能从程序空间直接访问低级内存。
我的建议是用低级语言编写一些东西(例如 C 使 mem 访问相当容易),然后使用 Java native 接口(interface) (JNI) 调用它并将数据导入您的 Java程序。谷歌上的“Java Native Interface”和/或“Calling C From Java”获取如何操作的教程。显然,对于您要在其上运行的每个平台,此 native 组件的编译方式会有所不同,从而提供一个单独的可执行二进制“ native ”文件。 ANSI C 曾经是一个很好的编码标准,因为如果您想使用多平台,那么所有(??)平台上都可以使用符合该标准的编译器。
使用 JNI 调用将打破 Java 的“编译一次,随处运行”的特性,因为它依赖于一个组件,该组件仍然需要为您想要运行它的每个平台重新编译。当然,在实践中, native 代码也可能因平台而异,因为内存组织可能因平台而异。
关于java - 访问存储在java中内存位置的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15827734/