全て、
クロニクル マップに時系列を保存しようとしています。シリーズはチャンクに分割され、各チャンクは個別のマップ エントリです。エントリが Chronicle Map に現在書き込まれている間 (BytesMarshaller がシリアル化されている間)、JVM が終了するとどうなるか誰かが知っているかどうか疑問に思っています。
メモリ マップされたファイルは破損したデータになってしまいますか?? 回避策はありますか??
全て、
クロニクル マップに時系列を保存しようとしています。シリーズはチャンクに分割され、各チャンクは個別のマップ エントリです。エントリが Chronicle Map に現在書き込まれている間 (BytesMarshaller がシリアル化されている間)、JVM が終了するとどうなるか誰かが知っているかどうか疑問に思っています。
メモリ マップされたファイルは破損したデータになってしまいますか?? 回避策はありますか??
新しいエントリが Chronicle Map に配置されると、これは単一のアトミック操作によってコミットされます。私はe。put 操作中に任意の時点で JVM が終了すると、次の影響が発生する可能性があります。
map.size()
out 実際のデータと同期する場合は +-1しかし、あなたが持っていないことが保証されています:
一方、Chronicle Map バージョン 3.x に関して重要なことは、そのような JVM が終了した後、エントリが配置されていた Chronicle Map セグメントがロックされることです。ロック状態を手動で消去するか、対応する API が追加されるまで待つことができます。これは Chronicle Map 2.x の場合ではなく、 2 秒間待機してロックを取得します。