在Java中直接将数据写入RAM,然后再读取? [关闭]

Posted

技术标签:

【中文标题】在Java中直接将数据写入RAM,然后再读取? [关闭]【英文标题】:Write data directly to RAM in Java, and then read it? [closed] 【发布时间】:2011-10-06 18:59:40 【问题描述】:

我知道这可能违反了编程中的许多一般规则,但是你会怎么做呢?我问这个的原因有两个:

    我想尝试让应用程序将数据写入 RAM,另一个从 RAM 读取相同的数据。 我想知道,因为在不久的将来我将不得不优化一个 java 应用程序。

【问题讨论】:

变量有什么问题? 两个程序之间可以使用sockets通信吗? @Jeff 没什么,只是想知道如何... @jonsca 我可以,但这会破坏学习如何将数据读写到内存的目的 @Andrew,java 不会自然地公开“共享内存”,您可以通过内存映射文件和要在 ram-disk 上映射的文件来做到这一点。 【参考方案1】:

Java 无法读取/写入 RAM 中的任意位置。

如果您想在不同应用程序之间共享数据,我建议使用文件或数据库。

【讨论】:

【参考方案2】:

在这里,我假设您希望在两个进程之间“传递”数据,而无需将数据写入数据库或文件等临时存储。答案将是:inter process communication。有一种技术可用于实现 IPC,但选择在很大程度上取决于您的要求。

【讨论】:

【参考方案3】:

这个问题缺乏很多关于一般编程的知识,至少从它的措辞上来说,但是我会在这里逗作者。

您真正需要的是共享内存作为 IPC(进程间通信)的一种形式。 Java 不支持共享内存,因为它是特定于操作系统的。而且,如果您想在两个进程之间共享对象,那么使用套接字同样容易且更灵活。您似乎非常关心性能,但对程序的性能一无所知,但实际上,通过套接字共享数据与共享内存一样快。我不会因为共享内存不是一种选择而过于沮丧。现在这个叫做互联网的东西出现了,已经没有多少程序使用它了。

如果您真的对共享内存感兴趣,您可以查看使用 NIO 的内存映射文件。现在 NIO2 与 Java 7 一起推出,可能还有其他一些性能更好的选项。

【讨论】:

啊,这有点令人沮丧,我只想知道 java 是否可以写入 JVM 控制的 RAM。我真的不关心在应用程序之间传输数据。那只是一种可能的情况,现在我发现这不切实际 是的,Java 无法写入 JVM 控制的 RAM。使用 new 表达式在 RAM 中分配 JVM 控制的对象。 String foo = new String("你不是很懂编程吗?") @Andrew 使用变量?变量在 RAM 中分配。 @ashy_32bit 你的意思是什么?问题已经结束,是的,我给了他一个尖刻的答案,但这是对他问题的真实答案。他只是不明白,因为他真的不明白他在问什么。阅读他的第 1 个问题,然后阅读他对我说他不想在应用程序之间传输数据的回复。他明明就是这么问的,但他根本不明白自己在问什么。我能说什么有些人有时会以错误的方式摩擦你,而互联网让你很容易搔痒。 @ashy_32bit。是的,也没有人要求你到处分发关于什么是合适的语气的“建议”。所以你来这里是为了提醒我什么?我用尖酸的语气回答了一个问题?哦,天哪,我敢打赌这是第一次在互联网上发生。【参考方案4】:

可以直接写入 JVM 控制的 RAM。但是,除非两个应用程序都运行在同一个 JVM 上,否则这可能不会很有用。

访问物理内存可能需要 Java 之外的东西。

【讨论】:

以上是关于在Java中直接将数据写入RAM,然后再读取? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

stm32 flash半页写入

如何在本机中写入/读取直接 ByteBuffer?

EasyExcel快速读写Excel数据

java中如何从一个文件中读文件,然后把另一个文件写入所读文件,最后再储存到另一个文件中

java中怎么把数据写入excel

利用VBA向excel表格中写入数据后,再次运行程序的话写入速度会非常慢