2012-03-12 9 views
-1

.NETネイティブ暗号化サービスプロバイダでは、最近アンマネージドコードに依存しているため、メモリリークの問題が発生しました。私がSOに遭遇した唯一の他の事はthisのポストでしたが、あまりにも詳細には犯人の良いリストを提供することはできませんでした。アンマネージリソースに依存する一般的な.NETクラス

はい、IDisposableを実装しているとしたら、管理されていないリソースがどこかで使用されている可能性がありますが、単にIntellisenseでDisposeを探す代わりに一般的に使用されている特定のクラスをリストにまとめたいと思います。私はそれに出くわした

ものは私のトラブルを引き起こした:

  • AesCryptoServiceProvider
  • ICryptoTransform

アンマネージリソースに依存していることは何他人の意識の人ですか?彼らが完全に管理されているように見えますが、そうではないような、特に陰気なものはありますか?前もって感謝します。

+1

これはそのような質問の場所ではありません。これは私たちのQ&Aフォーマットではあまりにもオープンに終わってしまいました(また、回答が多すぎます)。 – Oded

+0

お詫び申し上げます。私は、根本的ではあるが予期せぬ事例をひどく巨大なリストにまとめないと、それが根本的な管理されていない復興があった場合、それが人々に有用であるかもしれないと考えました。 – kmarks2

+0

それは間違いなく役に立ちます。 StackOverflowはそれのための場所ではありません。 – Oded

答えて

5

これらのクラスのリストは膨大なものになります。フレームワークの多くは、ネイティブのWindows API呼び出しをラップするので、多くの部分にネイティブリソースに関するラッパーが含まれています。

これはほとんどのUI関連のクラス(特にHWNDをラップするもの)と同様に、ほとんどがStream実装、待機ハンドル、ほとんどのネットワーク/ソケット実装をラップするものを含みます。

+0

はい、それは大きいでしょう。私は人々がある程度の規則性を持って来る共通のものに興味があります。また、私は、予期せず非管理リソースを使用するクラスについて興味があります。 – kmarks2

+1

@ kmarks2 IDisposableの検索は、おそらくそれを見つけるより良い方法でしょう。すべてのIDisposable実装がリソースをラップするわけではありませんが、それは良い出発点です。私はあなたにこれを行ういくつかのより大きなカテゴリを与えました。 –

1

徹底的なリストをまとめようとすると無意味なように見えますが、基本的にはすべてのタイプが実装されています。IDisposable

しかし、陰気なの例として、人々はしばしばSystem.DirectoryServices.SearchResultCollection class cannot release all of its unmanaged resources when it is garbage collectedを忘れています。メモリリークを防ぐには、SearchResultCollectionオブジェクトが不要になったときにDisposeメソッドを呼び出す必要があります。

+0

大多数のIDisposableクラスは、管理対象リソースのみを処理します。 –

関連する問題