一个特定的 HashMap 包含将被三个 Java 代码(b.java、c.java 和 d.java)使用的信息。 a.java 是另一个将变量放入 HashMap 的代码。现在,我希望这三个 Java 代码使用 HashMap。因为,在 a.java 终止后,HashMap 丢失了,我无法做到这一点。我不想使用文件写入和读取来使系统更快。使用 Java 可以通过什么方式实现它?
最佳答案
如果您还没有这样做,请尝试使用属性文件或 SQLite 数据库来存储值,并确保在您花时间优化性能之前读/写将成为瓶颈。
如果您已经在那里,那么请放心,当 Java 进程结束时,所有分配的内存都会被释放。所以要想保留在内存中,那么必须要有进程关联。您有多种选择,想到的几个选项要么运行 memcache/redis 进程,要么运行每个代码都连接到的 ehcache/hazelcast 进程。我假设您正在寻找比运行数据库更轻量级的东西来托管此信息。
使用内存缓存或 Redis,您可以编写键值对并使用网络协议(protocol)读取它们。 使用 ehcache/hazelcast,您可以编写和读取 DistributedMap,库负责获取进程间信息。
最终结果是相同的:一个独立于现有代码的进程,用于将值驻留在内存中以供临时代码访问。这样做的一个附带好处是您的代码不需要在同一台机器上运行,如果它们都在同一台 VM 中或者它们正在使用文件来保存数据(除非文件已打开),这是一个限制网络共享!)
关于java - 我们可以在 java 代码终止后将 HashMap 的值保留在内存中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34677306/