访问存储在java中的内存位置的数据

时间:2013-04-05 06:59:37

标签: java pointers native

我正在寻找一种从预先写好的内存位置读取数据的方法。有没有办法在java中,在Windows上运行的计算机上执行此操作?

1 个答案:

答案 0 :(得分:3)

Java提供了计算机的“抽象”,因此是“Java虚拟机”(JVM)。无论底层硬件或操作系统如何,该JVM(理论上)都是相同的。因此(AFAIK)无法从程序空间直接访问低级内存。

我的建议是用较低级别的语言编写内容(例如C使得mem访问相当容易),然后使用Java Native Interface(JNI)调用它并将数据导入Java程序。 Google在“Java Native Interface”和/或“Calling C From Java”中提供了有关如何使用的教程。显然,对于要运行它的每个平台,此本机组件的编译方式不同,从而提供单独的可执行二进制“本机”文件。 ANSI C曾经是一个很好的编码标准,因为如果你想进入多平台,所有(??)平台都可以使用符合这个标准的编译器。

使用JNI调用将破坏Java的“编译一次,随处运行”特性,因为它依赖于仍需要为要运行它的每个平台重新编译的组件。当然,在实践中,本机代码可能也会因平台而异,因为内存组织可能因平台而异。