質問

私は、"添付行為"と私のコンポーネントのラインナップ申込書きの入り打鍵先週末、例のギフトショップへ。黒ざくろさん、難しい話でEnterKeyTraversal.IsEnabled,見ることができ、コードを自分のブログ こちらの.

私の主要な関心事としてメモリリークはいっても、私の取り扱いPreviewKeyDownイベントUIElementsいを明示的に"unhook"のイベントです。

どのアプローチこれを防ぐために漏れの場合もある)?あいつのリスト要素から、unhookのPreviewKeyDownイベント申し上げます。※口。であった成功と付着挙動に独自のコンポーネント、そして優雅なメモリ管理ソリューション?

役に立ちましたか?

解決

同意しないDannySmurf

一部のコンポーネントのラインナップのレイアウトオブジェクトの目詰まりアップメモリおよびアプリケーションを本当のスピードが遅くなゴミを収集します。その言葉使いないよう正確に、漏れのメモリへの物を使用しない.また、項目ごみ収集したものではないがございますので参考にどこか(この場合において、からのイベントハンドラ).

この実answer:)

をお勧めしたいこと コンポーネントのラインナップ性能の記事MSDN

ませんの除去のイベントハンドラをオブジェクト がっていくような気がします物体の生

を代表するオブジェクトのパ そのイベントが効果的に参照 このオブジェクトです。そのため、イベント ハンドラで物体の生長 予想以上でした。時のクリーン のオブジェクトを登録した 聞けのオブジェクトのイベントで 必須の除去する委譲 前後でオブジェクトです。保 撮影画像に影響を与える有害物が生きてい 申請のメモリ使用量この 特に、trueの場合、オブジェクトの ルートの論理的なツリーのルートノードの視覚 ます。

なお、 弱いイベントのパターン

他のいの除去のイベントハンドラが終わった時点で、オブジェクトです。が知っていると付属性がなされるべき..

武器agiは、dexで下がらないboxerぐ!

他のヒント

哲学的議論のほは、OPのブログ記事で、思いの漏洩はこちら

ue.PreviewKeyDown += ue_PreviewKeyDown;

ハードへの参照 ue_PreviewKeyDown 格納され ue.PreviewKeyDown.

ue_PreviewKeyDownSTATIC 方法とのできない GCed.

のないハードへの参照 ue が格納されるようになっていくなれることを防止します GCed.

なので---のとする。

そのきっかけをつくっていきたい昔のメモリリークは全く異なる。が管理コードは、新しい意味の期的にメモリリークがより適切な...

Microsoftも認識できるメモリリーク:

なぜ実施しWeakEventん。

試聴のためのイベントで メモリ解放されます。代表的な技法 聴イベントが使用 の言語の書式る 付けハンドラのイベントに ソースです。例えば、クライアントまで、フルのC#と 構文:ソースです。SomeEvent+=new SomeEventHandler(MyEventHandler).

この技術を生成し、強い 参照からのイベントソースの イベントリスナー.通常、取り付け イベントハンドラのためのリスナーの原因 このリスナーオブジェクト 寿命に影響を与えたのオブジェクト 寿命の源にない場合に イベントハンドラを明示的に廃止)がある状況にあ といったオブジェクトの寿命を リスナーを制御することのみによる その他の要因などか 現在の所属先のツリーの視覚 の適用によるのではなく、 寿命の源です。きに ソースオブジェクトの寿命を超えて広がる のオブジェクトの寿命は、リスナー 通常のイベントのパターンへの メモリリーク:このリスナーは保たれ 生きていくのです。

たコンポーネントのラインナップのためのクライアントアプリの大きToolWindowsとすることができます落とし、すべてのニフティ、およびすべての対応には、XBAP..しかし、同様の問題があToolWindowsなゴミ収集した..このようにも依存のイベントリスナーにディスパッチ..このような問題がしくは、こちらをご覧ください。窓シャットダウンアプリです。ものを作成している場合に非常に大きなToolWindows多くのコマンドは、すべてのこれらのコマンドが再評価し、なければならない利用申請日..ただいたします。でも下駄までの記憶や時間対応のアプリ..

も思うのですく説明し、マネージャーにするには、こちらをクリックしてメモリリークより説明さんは、オブジェクトに対してはゴミの回収による一部のイベントのニーズ洗浄;)

@Nickええ、もの付着挙動は、その定義ではありませんが、同じオブジェクトとしての要素がイベントだ。

私の答えは、利用WeakReferenceかが私を見たことがありませんの簡単なコードサンプルに説明しました。:)

いきものの実施には"弱いイベントのパターン"の代わりに通常のイベント?

  1. 弱いイベントのパターンにコンポーネントのラインナップ
  2. 弱いイベントのパターン(MSDN)

説明私のコメントジョン-フェントンポストは私の答えです。き、以下の例:

class Program
{
    static void Main(string[] args)
    {
        var a = new A();
        var b = new B();

        a.Clicked += b.HandleClicked;
        //a.Clicked += B.StaticHandleClicked;
        //A.StaticClicked += b.HandleClicked;

        var weakA = new WeakReference(a);
        var weakB = new WeakReference(b);

        a = null;
        //b = null;

        GC.Collect();
        GC.WaitForPendingFinalizers();
        GC.Collect();

        Console.WriteLine("a is alive: " + weakA.IsAlive);
        Console.WriteLine("b is alive: " + weakB.IsAlive);
        Console.ReadKey();
    }


}

class A
{
    public event EventHandler Clicked;
    public static event EventHandler StaticClicked;
}

class B
{
    public void HandleClicked(object sender, EventArgs e)
    {
    }

    public static void StaticHandleClicked(object sender, EventArgs e)
    {
    }
}

の場合

a.Clicked += b.HandleClicked;

設定のみbがnullの場合も参照weakAとweakB滞在!設定した場合にのみ、null億滞在生存しているがな(ることにより、そのジョン-フェントンが間違っていうハードの参照が格納されるイベントのプロバイダこの場合)

この間違った結

a.Clicked += B.StaticHandleClicked;

が漏れないもののスのインスタンスについて協議することがありますの静的ハンドラです。の場合はこの限りではありません(試験は私のものとする。の場合の静的イベントハンドラまたはイベントである。書き込んだ場合

A.StaticClicked += b.HandleClicked;

参考確保できることb.

必ずイベント参照の要素のオブジェクトも参照のように、テキストボックスのフォームコントロールやればできないを防止します。静解析スタディを作成しイベントは、グローバルヘルパークラスおよびそのモニターのグローバルヘルパークラスすることもできます。これら二つの手順ではできませんでお試しWeakReferenceれるのが通例にぴったこれらの状況がオーバーヘッド。

んのブログポストだと思いまって誤解を招くアドバイス、マット.がある場合 実際の メモリ 漏れ ここでは、それはバグできます。NETフレームワーク、というのはできな修正コードで.

何だと思います(ポスターグ)が実際に話ここでは実際に漏れず、継続的に消費しています。それは同じものではありません。を明らかにし、漏洩し、メモリメモリでに予約されたプログラムにより、それを放棄すなわち、ポインタは左ぶ)は、その後はできませんが解放されます。以降、メモリ管理します。純、これは理論的に不可能である。しかし、プログラムへの準備のさらなる向上とともに、量メモリを参照するの範囲になるとガベージコレクションの対象);しかしその記憶がないなどの情報が漏えいするGCに戻りますので、システム再プログラムが終了します。

います。今のご質問にならないと思いますし、いくつかの問題です。まずないメモリリークし、コードしないほうがいいと思いま気にする必要はないとされてメモリ消費がります。どのような繰り返し提供するイベントハンドラなデ-提供すなわち、どちらかみの設定で、一度はごくうまた時間の割り当て)になって、コードに。

うことになるのは、ポスター。たしようとしていますが、彼はその驚くべき作業"漏えい、怖いの単語が多くのプログラマーを忘れた本当の意味での、管理されている世界います。

@Arcturus:

...目詰まりアップメモリのおもてなしに 応募がありそ なごみ収集します。

ことになるblindingly明らかであり、いに反対している。しかし:

---あなたは漏洩メモリへのオブジェクト すなく使用---ので があります。

"メモリが割り当てられているプログラムは、プログラムその後失へのアクセスでプログラム論理の不備"(ウィキペディアWikipedia"の"メモリリーク")

があれば活動への参照オブジェクトのプログラムにアクセスでき、その により定義 ではないが漏れ出ます。水漏れのオブジェクトなアクセス(または、OSの枠組みにおいては、解放され の寿命をレーティングシステムの現在のセッション.の場合はこの限りではありません。

(すいませんとする意味のナチス...になったかもしれない交通の便が良く助かりの学校が漏れは非常に特別な意味があります。人を使用する傾向がある"メモリリーク"この意味するものを消費する2KBのメモリ以上欲しい...)

もちろん、だけでなく、イベントハンドラ、オブジェクトも付属しませんが解放されるまでプロセスのメモリを再生では、ガベージコレクタによってで閉鎖される事態となりました。この行動は全くの予想に反しょうかを示唆する.が予想される場合はオブジェクトへの埋め立て、それを削除する必要があるものについての参考とき、イベントハンドラ.

True、true

てすぐのコース..があり、全く新しい世代のプログラマが生まれようとしている世の中にないタッチによる自動翻、その言語の定義を再発明そのものです。メモリ漏コンポーネントのラインナップはこのように異なるようなC/Cpp.

またはコースマ経営者の言することでメモリリー..私の研究員の同僚と言することでパフォーマンスとして発行いたします!

を参考にしてマットの問題ですが、パフォーマンスの問題る必要がある場合がありますわりました。場合にだけ使用数画面を使っていこうという画面を制御singletonsしない場合があります。はこの問題;).

もとにビット)で確実に理解、共感します。

でも、Microsoftと同じものを見ることができないというのはありえないと考え、"新規"の定義が適しています。この複雑なので、いいアピールになったと思いまの100%管理され世界でもMicrosoftがお好きなふりをしていること、Microsoftはライブなど。という時にメモリリークすることを意味するプログラムが消費すぎてメモリ(ことになるユーザー定義)、または管理基準は解放されるまで口として、やることでポリシー基準が適切になされなかったことにより清掃(その実メモリリーク)、またはポリコードからマネージドコードが漏洩メモリ(別実質漏えい).

この場合、この明白などの"メモリリークともいて不正確にしている。だが恐ろしく退屈ない人も、通話毎の過剰消費、または失敗を集めメモリリーク;と悔しいがこれらの人々はプログラマの方と知ります。このような重要なのは技術的に明白な意味になると思います。デバッグのいくの場合ことになったと言われています。

ます。いるつもりではないんですけれどることで、開放感あふれる-おとぎ話の言語です。う...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top