java - 我们可以在 java 代码终止后将 HashMap 的值保留在内存中吗?

标签 java

一个特定的 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/

相关文章:

java - Spring Cache - 使用自定义键更改其他缓存方法后,如何获取所有实际数据实体的列表?

java - 如何从 spring Controller 重定向到本地页面?

java - 如何检测 java 系统类?

java - 我正在尝试制作一个 Android 应用程序,使用 Android 处理进行视觉方面,使用 puredata 进行声音合成。这可行吗?

java - Maven - ClassNotFoundException : org. apache.commons.lang.StringUtils

java - 在 Google Code svn 上部署 Maven 生成的站点?

java - 启动 Wildfly 8.2.1 服务器时出错

java - Swing GUI 在 UNIX 上执行缓慢

java - java.time.Duration 的 springdoc-openapi-webflux-ui 问题(ISO 8601 持续时间格式)

java - 如何使用信号量解决消费者/生产者任务