問題タブ [dispose]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
176 参照

c# - この場合、リソースの解放について心配する必要がありますか?

アイテムのリストを保持するクラスコレクションがあるとしましょう。

このCollectionクラスのインスタンスがいくつかあり、それらはすべて異なるMyListを持っていますが、いくつかのItemを共有しています。例:10個のアイテムがあり、Collection1はアイテム1〜4を参照し、Collection2はアイテム2〜8を持ち、Collection3は4、7、8、および10をリストに持っています。

これを次のように実装しました。使用可能なアイテムを保持するグローバルリストが1つあります。新しいコレクションを作成する前に、このリストに必要なアイテムがすでにあるかどうかを確認します。ない場合は、アイテムを作成してグローバルリスト(そしてもちろんコレクション)に追加します。

私が見ている問題は、それらのアイテムがリリースされないことです。すべてのコレクションがなくなったとしても、グローバルリストがそれらを参照しているため、それらが消費するメモリはまだ解放されません。これは私が心配する必要があるものですか?もしそうなら、私は何をすべきですか?グローバルリストにカウンターを追加して、アイテムが不要になったことを確認し、その参照を削除することを考えました。

編集: それは実際には設計上の問題だと思います。グローバルリストのアイデアを破棄し、代わりにすべてのコレクションをループして、必要なアイテムがすでにあるかどうかを確認します。

0 投票する
3 に答える
802 参照

winforms - オーバーライドされた破棄関数で、Windows フォーム内のコントロールのすべての公開された破棄関数を呼び出す必要がありますか?

タイマー、グリッドビュー、バインディング ソースなどの多くのコントロールを含む Windows フォームがあり、これらはすべて破棄機能を公開しています。これで破棄機能を呼び出す必要がありますか

また、 components.Dispose() は正確に何をしますか?

ありがとう

0 投票する
6 に答える
1125 参照

vb.net - Nothing に代入すると Dispose が呼び出されますか?

最近、次のような VB .NET コードを見ました。

サービスに Nothing を割り当てても何も起こりませんか? ガベージ コレクションの問題である場合、「サービス」がスコープ外になると、参照されたオブジェクトがガベージ コレクションされ、オブジェクトに対して dispose メソッドが呼び出されると想定しています。

オブジェクトへの別の参照が存在する可能性があるため、この変数 Nothing を割り当てても実際には何もできないように思われるため、とにかく参照がチェックされる必要があります。

0 投票する
4 に答える
11745 参照

vb.net - service.close() と service.abort() - WCF の例

WCF チュートリアルの 1 つで、次のサンプル コードを見ました。

これは、エラー状態でもリソース (つまり、接続) が確実に解放されるようにする正しい方法ですか?

0 投票する
4 に答える
3433 参照

c# - (.net) CriticalFinalizerObject - 実際には何をするのですか?

このクラスについての私の理解では、クラスのファイナライザー (デストラクタ) が呼び出されることを確認したいときに使用する必要がありますが、私が行ったいくつかのテストから、そうではないようです。dispose メソッドが呼び出されていることを確認できない場合、他の方法はありますか? たとえば、タスク マネージャーなどでプログラムを閉じても、オブジェクトを終了するために何らかのコードが実行されるようにしたい場合はどうすればよいでしょうか?

0 投票する
3 に答える
3792 参照

c# - C# .NET Linq メモリのクリーンアップまたはリーク?

処理する 150 万件のリストを含む 2 GB の大きなファイルがあります。文字列操作を実行し、各リストをデータベースにアップロードするコンソール アプリを実行しています。

  1. LINQ オブジェクトを作成し、リスト (ループ) ごとに新しい LinqObject() に割り当てることでオブジェクトをクリアします。

  2. オブジェクトが完成したら、リストに追加します。

  3. リストが 100 個のオブジェクトに達したら、リスト全体に対して submitAll を実行し、リストをクリアしてから繰り返します。

プログラムを実行すると、メモリ使用量が増え続けます。メモリ使用量を抑えるために何かすべきことはありますか? GC.collect してみました。私はdisposeを使いたいと思います..

ご覧いただきありがとうございます。

0 投票する
3 に答える
3098 参照

c# - Interop COM オブジェクトをラップするときに、C# で破棄パターンを実装するにはどうすればよいですか?

私のクラスには Interop からのオブジェクトが含まれており、オブジェクトを割り当てるメソッドを呼び出します。また、それを解放するメソッドも公開しているので、Dispose() でこれを呼び出す必要があると思います。

ここで、Dispose パターンに従ってすべてを展開する必要があります。解放する使い捨てまたはアンマネージド リソースは他にないので、comInstance が管理されていると仮定すると (Interop が行うことではなく、アンマネージドをマネージドにラップするのではないでしょうか?)、パターンは次のように解消されると思います。

MyClass のインスタンスで Dispose() を明示的に呼び出さないと、どのリークが発生しますか? つまり、comInstance は管理されていない必要があり、パターンは次のように解消されます。

編集:

  1. 完全なパターンでクラスが混乱するのを避けるために、クラスを封印することはできますか?
  2. ComClassName (および一般的に任意のクラス) がアンマネージであることをどのように確認できますか?
0 投票する
1 に答える
1442 参照

c# - close、dispose、finalize、GC、Idisposable、....それらの明確な説明がありますか?

私は閉じる、処分する、ファイナライズする、GC、Idisposableについて完全に混乱しています。ああ、それらの明確な説明を送っていただけませんか?

0 投票する
6 に答える
9385 参照

c# - いつ廃棄する必要がありますか?

次のようなコードがある場合:

ペンとブラシを処分する必要がありますか?bmpとgはどうですか?

私の主な質問は、これらを手動で廃棄する場合、スコープから外れるとすぐに廃棄されないのはなぜですか?手動で処分しなかった場合、それはどうなるでしょうか?人々がこれを手動で行うのは遅延ですか?

0 投票する
5 に答える
4184 参照

c# - using() および複数のラップされたストリームで破棄する

たとえば、実行している場合、最も外側のストリームに using() だけが必要だというのは正しいですか

StreamWriter を破棄すると、基になるストリームも破棄/閉じる必要があるため、これを行う必要はありません ?:

(これらは、ラップされたストリームを破棄する方法の単なる例であり、単に StringWriter を使用するなどの代替手段を探していないことに注意してください。)