パフォーマンスの最適化で32GBのグラフデータ(ノード、エッジなど)がメモリにロードされ、そこに保持されるようなプロジェクト(私はプロジェクトではない)に取り掛かりました。これは長時間実行されるサービスなので、データはサービスの存続期間中メモリ内に残ることを意味します。 Gen 2コレクションがCLRによってトリガーされると、パフォーマンスが低下する大きな休止がありますが、GCはGen 2をスキャンして到達可能なオブジェクトとしてすべてをマークします。パフォーマンスの問題を引き起こすGCの一時停止
私が知りたいのは、大量のデータをメモリに保存しなければならない管理対象アプリケーションで利用できる戦略があることです。 Gen 2コレクションの実行を阻止する最良の方法は何ですか?
Gen 2を実行しないと、Gen 2にするオブジェクトがリークしますが、永遠に生き残られません。あなたのアプリケーションが何をするかによって、それは多くのオブジェクトになる可能性があります。 – delnan
申し訳ありませんが、あなたは正しいです。そのような長い休止を防ぐことができる戦略はありますか?または、管理されたランタイムを使用してこの種のアプリケーションを実装するのは悪い考えですか? –
@itadapterありがとうございます。私はもはやその会社で働いていませんが、それは最終的に私たちがやってしまったことです。つまり、管理されていない状態にマーシャリングすることです。そしてそうです、問題を解決しました。 –