- - PR -
メモリ使用量の確認について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-01-11 14:29
言語:VisualStadio 2008 C#
コンソールアプリケーションで作成したプロセスで メモリが正しく開放されているかどうか確認する場合 みなさんはどのように確認されているのでしょうか? Windowsタスクマネージャ画面のパフォーマンスタブを開き メモリの空き等で確認されているのでしょうか? 教えてください。宜しくお願いします。 | ||||||||
|
投稿日時: 2009-01-12 11:44
マネージド アプリケーションでは、メモリは管理されているので、開発者が管理する必要はありません。
| ||||||||
|
投稿日時: 2009-01-12 16:25
プロファイルするツールとしては
「CLR プロファイラ」 http://www.microsoft.com/japan/msdn/enterprise/pag/scalenethowto13.aspx でしょうか。 | ||||||||
|
投稿日時: 2009-01-13 14:26
定番ですが、
http://technet.microsoft.com/en-us/sysinternals/default.aspx Process Utilities 内にある、Process Explorerなどを活用しています。 #メモリ自体は気にしないけど、Handleが増殖するような 作りをする輩がいるので… | ||||||||
|
投稿日時: 2009-01-14 11:52
> Windowsタスクマネージャ画面のパフォーマンスタブを開き
> メモリの空き等で確認されているのでしょうか? 基本的にこれはあてにならないので使いません。 (C#に限らず、C++だろうが同じです) メモリ周りに関してはOS側の管理が色々と入っているので タスクマネージャのメモリの表示は気休め程度でしかないからです。 タスクマネージャ上での細かな数値の動きは旨く動いている事や 旨く動いていない事の根拠にはなりません。 明らかにおかしい場合はタスクマネージャにも出てくると思いますが。 (極端にメモリ使用量が増えるとか) 実際に使うのであれば、既に皆様が紹介されている通りです。 | ||||||||
|
投稿日時: 2009-01-14 13:17
なんの根拠もない値を表示しているわけではありません。念のため。
メモリに関して言えば、OS 側の管理じゃないと思う。 タスクマネージャのメモリ系の数値は、「OS がプロセスに割り当てたメモリの実際」を反映しています。 ですが、モダンなアプリケーションでは「OS がプロセスに割り当てたメモリ」を直接的に用いることはなく、C/C++ ランタイムや CLR といった、いわゆる「ランタイム」が OS からメモリの割り当てを受け、それをアプリケーションに対して「また貸し」するスタイルが広く浸透しています。 このため、タスクマネージャの表示する値に注目していても、「アプリケーションの実際」を知ることはできません。 |
1