我知道这可能违反了编程中的许多一般规则,但是你会怎么做呢?我问这个的原因有两个:
- 我想尝试让应用程序将数据写入 RAM,另一个从 RAM 读取相同的数据。
- 我想知道,因为在不久的将来我将不得不优化一个 java 应用程序。
我知道这可能违反了编程中的许多一般规则,但是你会怎么做呢?我问这个的原因有两个:
这个问题至少从它的措辞上缺乏很多关于一般编程的知识,但是我会在这里逗弄作者。
您真正需要的是共享内存作为 IPC(进程间通信)的一种形式。Java 不支持共享内存,因为它是特定于操作系统的。而且,如果您想在两个进程之间共享对象,那么使用套接字同样容易且更灵活。您似乎非常关心性能,但对程序的性能一无所知,但实际上,通过套接字共享数据与共享内存一样快。我不会因为共享内存不是一种选择而过于沮丧。现在已经没有多少程序使用它了,因为这个叫做互联网的东西出现了。
如果您真的对共享内存感兴趣,您可以查看使用 NIO 的内存映射文件。现在 NIO2 与 Java 7 一起推出,可能还有其他一些性能更好的选项。
Java 无法读取/写入 RAM 中的任意位置。
如果您想在不同的应用程序之间共享数据,我建议使用文件或数据库。
在这里,我假设您希望在两个进程之间“传递”数据,而无需将数据写入数据库或文件等临时存储。答案将是:进程间通信。有一种技术可用于实现 IPC,但选择在很大程度上取决于您的要求。
可以直接写入 JVM 控制的 RAM。但是,除非两个应用程序都在同一个 JVM 上运行,否则这可能不会很有用。
访问物理内存可能需要 Java 之外的东西。