ユーザーにアクセスできないプロセスを実行するサーバーがあります。したがって、スループットは重要ではありません。ほとんどの場合、サーバーは小さなジョブしか実行しないため、ほとんどの場合、主にマイナーGCを実行します。たまには、大きな仕事が必要になります。そのため、プロセスのためのスペースを確保するために大規模なGCが必要になります。私は数日間、決して主要なgcをしたことがないようなケースを見てきました。Javaメインガベージコレクションをより頻繁に調整する方法
私の問題は、主要なgcが実行され、一時停止し、ヘルスチェックアラートを引き起こすときです。私たちはヒープサイズを小さくしようとしましたが、問題はなくなりました。しかし、大きな仕事が来ると、それは記憶がなくなります。ヘルスチェックのタイムアウトを増やしたくないので、必要なときに待機するのではなく、ヒープサイズが大きくてもgcが頻繁に発生するようにgcをチューニングする必要があります。私は-XX:+UseConcMarkSweepGC
を使用して、より低い影響を一時停止するように変更する予定です。他のJVMオプションも試してみるべきですか?
メモリリークを修正するのはなぜですか? – mre
マークと掃引?それはGCの古いアルゴリズムではありませんか?私は世代モデルがより良いと思っていたでしょう。 – duffymo
多くのオブジェクトはリクエストのサービスの外で生き残る必要があるため(ほとんどの場合、小規模/素早い)、児童死亡率が高いはずです。 – Dunes