GC.Collect を使用する場合は注意してください
GC.Collect()
を直接呼び出すことは一般的に推奨されませんが、そうすることが合理的である特定の状況もあります。たとえば、サービスがループ内で実行され、タスクの実行後に長時間アイドル状態になっている場合、アイドル フェーズ中にガベージ コレクションを強制的に実行して、期限切れが近づいているプロセスによって占有されているメモリを解放すると、リソースの使用率を最適化できます。
もう 1 つの許容可能な状況は、GUI アプリケーションで大きなフォームを閉じた後です。この時点ではすべての UI コントロールがガベージ コレクションの対象となり、フォームを閉じる際の一時的なパフォーマンスの低下はユーザーには気付かれない可能性があるため、GC コレクションを開始するのが合理的です。
さらに、次の状況では GC.Collect()
の呼び出しを考慮する必要がある場合もあります:
GCLatencyMode.LowLatency
または GCLatencyMode.SustainedLowLatency
に入るときまたは終了するときに、GC.Collect(2, GCCollectionMode.Forced)
を使用してフル GC を強制することをお勧めします。 GC.TryStartNoGCRegion
メソッドを使用して一定期間 GC を無効にすることができます。この期間の前後にフル GC を手動でトリガーすることをお勧めします。 これらの例外は、GC.Collect()
を呼び出す際の注意の重要性を強調しています。この決定を下す前に、必ず特定の環境と潜在的なパフォーマンスへの影響を評価してください。
以上がいつ GC.Collect() を呼び出すことが許可されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。