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

标签 java pointers native

我正在寻找一种从预先写入的内存位置读取数据的方法。有没有办法在运行 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/

相关文章:

java - 如何在java中屏蔽颜色 channel ?

c++ - 环或环中哪个共享指针应该是弱指针

c - 什么时候初始化指针?

java - 带有自定义按钮的 ImageAdapter

java - 方法不存在 (MainActivity.java)

java - libGDX 3D 跟随和面向对象

javascript - electron-builder 与 electron-packager

c++ - 如何将指向 PVOID 的指针类型的参数从 LabView 传递到 DLL?

java - 为什么Object和Thread类的一些方法没有在java本身中实现?

java - Weblogic 12cR2 Nodemanager native 库无法在 mac os x 上运行