JVM崩溃时如何处理内存数据?

时间:2016-01-18 14:25:33

标签: java performance io crash jvm

我有一个场景,我将多个线程中的数据读入Java对象(例如List或Map)。另一个线程是从此Object读取数据并在确认时弹出。当JVM突然崩溃时,我想处理对象中的数据丢失,可能是由于电源故障或强制杀死进程。

我可以将数据保存在文件中,但我需要最小化I / O以提高性能。 验收标准无数据丢失

请建议我一些想法。 在此先感谢

2 个答案:

答案 0 :(得分:1)

无数据丢失=在多台计算机(计算机或数据中心)上保存到磁盘可能会死亡。这当然是最慢的选择,但如果这是你需要的......

另一种方法是复制到内存中的多台计算机(有许多此类解决方案),但您将受到数据中心之间链接速度的限制。

答案 1 :(得分:1)

由于您的验收标准无数据丢失,您必须将磁盘持久性视为可行选项之一。

您可以使用以下方法。

  1. 按照 @Peter Lawrey
  2. 的建议,在多个节点上坚持disk
  3. 坚持data stores,如CouchbaseEhcache等(NoSQL是首选)
  4. 使用Kafka
  5. 等分布式邮件系统
相关问题