c#メモリの漏れを回避: =
イベントハンドラーの危険
メモリは、適切にアプリケーションのパフォーマンスを低下させます。 C#では、1つの一般的なソースは、イベントハンドラーを追加するために使用される一見無害な =
オペレーターです。
漏れを理解する
を使用してイベントを購読すると、イベントパブリッシャーはサブスクライバー(イベントハンドラー)への参照を保持します。 出版社がサブスクライバーの長寿命の場合、サブスクライバーはメモリのままで、頻繁なイベントや非同期イベントに問題があるリークを作成します。
=
-=
でハンドラーを削除すると、参照が破損しますが、パブリッシャーと加入者が頻繁に類似したライフサイクルを持っているため、これはしばしば実用的ではありません。
効果的なイベント処理戦略-=
堅牢なイベント処理には、慎重な設計が必要です:
弱い参考文献:
弱い参照を使用して、サブスクライバーが不要になったときにゴミ収集を許可します。 これにより、出版社がサブスクライバーを無期限に稼働させないようにします。プロファイラー:アプリケーションプロファイラーを使用して、メモリリークを含むパフォーマンスボトルネックを特定します。
メモリプロファイラー:専用のメモリプロファイラーは、ゴミ収集されていないオブジェクトを識別します。
以上が= を使用した C# イベント ハンドラーによって引き起こされるメモリ リークを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。