質問するログイン新規登録

回答編集履歴

2

修正漏れ

2019/12/10 08:20

投稿

tamoto
tamoto

スコア4346

answer CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  IDisposable について勘違いしているようなのですが、IDisposable の役割は「メモリの解放」ではなく、「リソースの解放」です。
9
9
  「リソース」とは、メモリの上に構成される、オープンとクローズの2つの性質を備えたオブジェクトという、「メモリ」よりも上位の抽象的概念です。
10
- Dispose により「リソースの放」を行うことは、.NET のメモリの消費量には影響しません。メモリの破棄を行うのは GC であり、Dispose を行ったかどうかとは無関係なのです。
10
+ Dispose により「リソースの放」を行うことは、.NET のメモリの消費量には影響しません。メモリの破棄を行うのは GC であり、Dispose を行ったかどうかとは無関係なのです。
11
11
 
12
12
  GC はゴミとなったメモリでもしばらく蓄え続け、あるタイミングで一気に解放します。そのため、大きく上がって下がってを繰り返すグラフになります。
13
13
  これは、GC を実行すること自体がそこそこコストがかかる動作なので、ある程度溜め込んで一気にやった方が (速度的に) 効率的だからです。メモリの消費を最小限に抑えることを諦め、速度を優先したということです。

1

誤字修正等

2019/12/10 08:20

投稿

tamoto
tamoto

スコア4346

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
  ただし、実行速度はお話にならないほど低下すると思います。