1

巨大な WPF アプリケーションのメンテナンスを行っています。アプリケーションには、大量のメモリを消費し、時間の経過とともに消費量が増加するという 1 つの問題があります。私はウェブ上で多くのことを検索しましたが、これに対する最良の解決策が見つかりませんでした。私が試したプログラムはたくさんありますが、漏れが発生しているクラスを知らせるだけで、それを防ぐための解決策を提供する人はいません。

専門家に次の質問があります。

  1. 一度にすべての UnDisposed オブジェクトを破棄できますか?.
  2. この問題を解決する最善の方法は何ですか?
4

2 に答える 2

1

使用するソフトウェアはすべて、問題のクラスを特定するのに役立ちますが、問題を防止または解決するためのソリューションではありません。

一度にすべてのオブジェクトを破棄するには、その特定の時点でのオブジェクトへの参照が必要です。それは実用的ではないと思います。

より良い解決策は、適切に破棄されていない問題のクラスとリソースを特定し、デンマークが言ったようにIDisposable interface、それらに対して を実装することです。次に、使用が終わった後、オブジェクトを明示的に破棄できます。

また、これらのオブジェクトを破棄しないようにステートメントを使用することを考えることができます。'using'これにより、これらのオブジェクトを明示的に破棄する手間が軽減され、タイムリーな破棄が行われることにもなります。

using statement ここここでの使用について詳しく読むことができます

于 2012-09-05T07:06:13.720 に答える
-2

オブジェクトがメモリを大量に消費するクラスのコードを確認する必要があります。次に、それらのクラスにIDisposableインターフェイスを実装します。次に、それらのクラス用にオブジェクトが作成された場所で、使用後にオブジェクトが破棄されることを確認します。

単純ですが正しくない、私見ですが、最初の質問に対する答えは、GCクラスの静的メソッドを使用することです。ただし、GCは、自分のアプリケーションだけでなく、すべての.Netアプリケーションに出現することに注意してください。

于 2012-09-05T06:02:04.823 に答える