私はデータを失うことは望まないし、同時に外部依存(たとえばDBのような)のためにこのサービスを失敗させる必要があるので、メモリ内の呼び出しをすべて段階的に実行するサービスを持っています。 。これらのステージングされたコールは、通常、バックグラウンドでピックアップされ、処理されます。Javaのコレクションが容量を超えて増加するとどうなりますか?
何らかの理由で、コールが多すぎてメモリが不足している場合は、警告する必要があります。
質問:リソースが不足してリストに追加が失敗したときに通知または通知するには、どのような例外を検出する必要がありますか? VM自体にOOMが発生するのでしょうか、それともコレクションレベルの制限がありますか?
コレクションレベルの制限がない場合は、サービスの使用状況をどのように監視することをおすすめしますか?現在、ヒープ使用量とメモリ使用量のメトリックがあります。それらは十分ですか?また、JVMはOOMエラーでkillするように設定されています(これは、VM Managerがkillで管理しているプロセスを再起動するためです)。
メモリの面では、あなたはOOMEを取得します。コレクションに入る要素を制限したい場合は、それを自分で実装する必要があります。 – Cruncher
私はこのような状況を避けるべきです。まず、ファイルベースのキャッシュを使用します。 –
テストするのは簡単だと思われます。無限ループ内でコレクションにアイテムを追加し、何が起こるかを確認する単純なアプリケーションを作成します。 – Eran