- PR -

メモリ使用量の確認について

1
投稿者投稿内容
しん
ベテラン
会議室デビュー日: 2008/05/27
投稿数: 63
投稿日時: 2009-01-11 14:29
言語:VisualStadio 2008 C#

コンソールアプリケーションで作成したプロセスで
メモリが正しく開放されているかどうか確認する場合
みなさんはどのように確認されているのでしょうか?

Windowsタスクマネージャ画面のパフォーマンスタブを開き
メモリの空き等で確認されているのでしょうか?

教えてください。宜しくお願いします。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2009-01-12 11:44
マネージド アプリケーションでは、メモリは管理されているので、開発者が管理する必要はありません。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2009-01-12 16:25
プロファイルするツールとしては

「CLR プロファイラ」
http://www.microsoft.com/japan/msdn/enterprise/pag/scalenethowto13.aspx
でしょうか。

ZAP
会議室デビュー日: 2008/06/26
投稿数: 1
投稿日時: 2009-01-13 14:26
定番ですが、
http://technet.microsoft.com/en-us/sysinternals/default.aspx

Process Utilities 内にある、Process Explorerなどを活用しています。

#メモリ自体は気にしないけど、Handleが増殖するような
作りをする輩がいるので…
ぱてお
常連さん
会議室デビュー日: 2008/03/07
投稿数: 41
投稿日時: 2009-01-14 11:52
> Windowsタスクマネージャ画面のパフォーマンスタブを開き
> メモリの空き等で確認されているのでしょうか?

基本的にこれはあてにならないので使いません。
(C#に限らず、C++だろうが同じです)
メモリ周りに関してはOS側の管理が色々と入っているので
タスクマネージャのメモリの表示は気休め程度でしかないからです。
タスクマネージャ上での細かな数値の動きは旨く動いている事や
旨く動いていない事の根拠にはなりません。
明らかにおかしい場合はタスクマネージャにも出てくると思いますが。
(極端にメモリ使用量が増えるとか)
実際に使うのであれば、既に皆様が紹介されている通りです。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2009-01-14 13:17
引用:

> Windowsタスクマネージャ画面のパフォーマンスタブを開き
> メモリの空き等で確認されているのでしょうか?

基本的にこれはあてにならないので使いません。



なんの根拠もない値を表示しているわけではありません。念のため。

引用:

メモリ周りに関してはOS側の管理が色々と入っているので



メモリに関して言えば、OS 側の管理じゃないと思う。

タスクマネージャのメモリ系の数値は、「OS がプロセスに割り当てたメモリの実際」を反映しています。

ですが、モダンなアプリケーションでは「OS がプロセスに割り当てたメモリ」を直接的に用いることはなく、C/C++ ランタイムや CLR といった、いわゆる「ランタイム」が OS からメモリの割り当てを受け、それをアプリケーションに対して「また貸し」するスタイルが広く浸透しています。

このため、タスクマネージャの表示する値に注目していても、「アプリケーションの実際」を知ることはできません。

1

スキルアップ/キャリアアップ(JOB@IT)