[解決済み] アンマネージド・リソースとは、具体的にどのようなものですか?
2022-04-21 03:25:59
質問
アンマネージド・リソースについて知りたいのですが。 どなたか基本的なことを教えてください。
どのように解決するのですか?
マネージド・リソースとは、基本的にガベージコレクタによって管理される、"マネージド・メモリ"のことを指します。管理されたオブジェクト(管理されたメモリを使用する)への参照がなくなったとき、ガベージコレクタは(最終的に)そのメモリを解放します。
そして、アンマネージド・リソースとは、ガベージコレクタが知らないものすべてを指す。たとえば、以下のようなものです。
- オープンファイル
- ネットワーク接続を開く
- アンマネージドメモリ
- XNAの場合:頂点バッファ、インデックスバッファ、テクスチャなど。
通常、これらのアンマネージドリソースは解放したいものです。
以前
を使用すると、それらを管理しているオブジェクトへの参照をすべて失うことになります。これを行うには
Dispose
を使うか、(C#では)
using
を呼び出すことを処理するステートメントです。
Dispose
を使用します。
を怠ると
Dispose
このような場合、ガベージコレクタは、そのリソースを含むオブジェクトがガベージコレクタされるときに、最終的にそのリソースを処理します(これが最終化です)。しかし、ガベージコレクタはアンマネージド・リソースについて知らないので、それらを解放する必要がどの程度あるのかを知ることができません - したがって、あなたのプログラムのパフォーマンスが低下したり、リソースが完全になくなったりする可能性があります。
アンマネージドリソースを扱うクラスを自分で実装する場合、そのクラスは
Dispose
と
Finalize
を正しく表示します。
関連
-
[解決済み】C#でクエスチョンマークを2つ並べるとどんな意味になるのか?
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] C#のFinalize/Disposeメソッドの使用について
-
[解決済み】IEnumerable vs List - What to Use? どのように動作するのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み】DataSetとDataTableはDispose()すべきですか?