回答編集履歴
2
修正漏れ
answer
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
IDisposable について勘違いしているようなのですが、IDisposable の役割は「メモリの解放」ではなく、「リソースの解放」です。
|
9
9
|
「リソース」とは、メモリの上に構成される、オープンとクローズの2つの性質を備えたオブジェクトという、「メモリ」よりも上位の抽象的概念です。
|
10
|
-
Dispose により「リソースの
|
10
|
+
Dispose により「リソースの解放」を行うことは、.NET のメモリの消費量には影響しません。メモリの破棄を行うのは GC であり、Dispose を行ったかどうかとは無関係なのです。
|
11
11
|
|
12
12
|
GC はゴミとなったメモリでもしばらく蓄え続け、あるタイミングで一気に解放します。そのため、大きく上がって下がってを繰り返すグラフになります。
|
13
13
|
これは、GC を実行すること自体がそこそこコストがかかる動作なので、ある程度溜め込んで一気にやった方が (速度的に) 効率的だからです。メモリの消費を最小限に抑えることを諦め、速度を優先したということです。
|
1
誤字修正等
answer
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
.NET のメモリの管理はほぼ全て GC に任せられています。任せられているということは、自分たちでそれをどうすることもできません。それは IDisposable をどうしているかとも関係ありません。
|
7
7
|
|
8
|
-
IDisposable について勘違いしているようなのですが、IDisposable の役割は「メモリの
|
8
|
+
IDisposable について勘違いしているようなのですが、IDisposable の役割は「メモリの解放」ではなく、「リソースの解放」です。
|
9
9
|
「リソース」とは、メモリの上に構成される、オープンとクローズの2つの性質を備えたオブジェクトという、「メモリ」よりも上位の抽象的概念です。
|
10
|
-
Dispose により「リソースの開放」を行うことは、.NET のメモリの消費量には影響しません。メモリの破棄を行うのは GC であり、Dispose とは無関係なのです。
|
10
|
+
Dispose により「リソースの開放」を行うことは、.NET のメモリの消費量には影響しません。メモリの破棄を行うのは GC であり、Dispose を行ったかどうかとは無関係なのです。
|
11
11
|
|
12
|
-
GC はゴミとなったメモリでもしばらく蓄え続け、あるタイミングで一気に
|
12
|
+
GC はゴミとなったメモリでもしばらく蓄え続け、あるタイミングで一気に解放します。そのため、大きく上がって下がってを繰り返すグラフになります。
|
13
13
|
これは、GC を実行すること自体がそこそこコストがかかる動作なので、ある程度溜め込んで一気にやった方が (速度的に) 効率的だからです。メモリの消費を最小限に抑えることを諦め、速度を優先したということです。
|
14
14
|
|
15
|
-
もし、なんとしてもメモリ使用量グラフを平坦に保ちたいのであれば、何かオブジェクトを使い終わる度にすぐさま手動で GC を実行することでおそらく実現できるでしょう。
|
15
|
+
もし、なんとしてもメモリ使用量グラフを平坦に保ちたいのであれば、何かオブジェクトを使い終わる度にすぐさま「手動で GC を実行する」ことでおそらく実現できるでしょう。
|
16
16
|
ただし、実行速度はお話にならないほど低下すると思います。
|