0

.net でのメモリ管理に関するいくつかのアイデアを読みましたが、次の 3 つの質問には回答がありません

  1. アンマネージド リソースは、マネージド リソースに使用されるのと同じマネージド ヒープでメモリを取得し、誰がそれを割り当てますか (OS または CLR またはその他)?
  2. 管理対象リソース R で Dispose() メソッドを呼び出すと、この R が占有しているメモリと、R が占有している他のすべての非管理対象リソースがすぐに解放されますか
  3. 誰が unmanages リソース (OS または CLR またはその他) によって占有されているメモリをクリアします。

どんな助けでも大歓迎です。

4

1 に答える 1

1

1)。アンマネージド リソースを作成するコード。たとえば、Win32 ファイル ハンドルは OS カーネルによって割り当てられます。

2)。管理されていないリソースを解放するのは、Dispose メソッドの実装次第です。たとえば、Win32 CloseHandle を呼び出してファイル ハンドルを閉じることができます。管理されたリソースはまだそこにあり、GC によってのみ解放されます。

3)。メソッドの実装を破棄し、通常はネイティブ関数を呼び出します。

于 2012-07-13T04:59:01.090 に答える