DOBON.NETプログラミング掲示板過去ログ
.NETアプリのタスクマネージャでのメモリ使用量について
題名: .NETアプリのタスクマネージャでのメモリ使用量について
著者: ぶちゃらてぃ
日時: 2006/06/21 12:01:50
ID: 16326
この記事の返信元:
(なし)
この記事への返信:
[16330]
Re[1]: .NETアプリのタスクマネージャでのメモリ使用量について
渋木宏明(ひどり)
2006/06/21 12:31:13
[16341]
Re[1]: .NETアプリのタスクマネージャでのメモリ使用量について
管理人
2006/06/22 4:10:04
ツリーを表示
環境/言語:[Framework2.0,WindowsXP]
分類:[.NET]
よろしくお願いします。
.NETで開発したアプリは、たとえ単純にフォームだけを配置したものであっても、
起動直後にタスクマネージャでそのアプリのメモリ使用量を確認すると20MBも消費
しているように見えます。しかし、アプリを一度最小化するとメモリ使用量は5MB
程度に落ち着きます。なんでだーと思っていたのですが、下記の記事に答えがありました。
Windows業務アプリケーション開発 Q&A #1
http://www.atmarkit.co.jp/fdotnet/vblab/appqa_01/appqa_01_01.html
記事によれば、.NETアプリのタスクマネージャにおけるメモリ使用量は正確ではなく、
実際のメモリ使用量を得るにはSystem.GC.GetTotalMemoryを使えとあります。
C#でMessageBox.Show(System.GC.GetTotalMemory(false).ToString());
とすると実メモリ使用量は5MB前後のようです。
タスクマネージャから確認できるメモリ使用量はワーキングセットという事前に確保されたメモリ領域だそうです。
質問なのですが、このワーキングセットは実メモリ使用量とは違うとしても、
そのメモリ領域は確保されているのだから他のアプリからは使用できないはずです。
となると、.NETアプリが実際に使用しているのが5MBだろうと、ワーキングセット
として20MB確保していれば、その.NETアプリは20MBを消費しているとほぼ同義だと
思うのです。.NETアプリを起動して最小化せずにしばらく放置しておいてもタスクマ
ネージャの値は20MBから減りません。ここでアプリを最小化すれば5MBまで減りま
す。ということは全ての.NETアプリは起動直後に自動的に一度最小化して元に戻すよ
うなコードを入れた方が、メモリ効率という点からは有効なのでしょうか?
題名: Re[1]: .NETアプリのタスクマネージャでのメモリ使用量について
著者: 渋木宏明(ひどり)
URL:
http://hidori.jp/
日時: 2006/06/21 12:31:13
ID: 16330
この記事の返信元:
[16326]
.NETアプリのタスクマネージャでのメモリ使用量について
ぶちゃらてぃ
2006/06/21 12:01:50
この記事への返信:
(なし)
ツリーを表示
> 質問なのですが、このワーキングセットは実メモリ使用量とは違うとしても、
> そのメモリ領域は確保されているのだから他のアプリからは使用できないはずです。
だとしても問題ありません。
単に「領域が予約されている」だけで、実際に何か物理的な資源が大量に使用されているわけではないからです。
まったく何も資源が使われてないわけではありませんが、説明すると長くなるので、詳しく知りたければ仮想記憶の仕組みについてお勉強してください。
題名: Re[1]: .NETアプリのタスクマネージャでのメモリ使用量について
著者: 管理人
URL:
http://dobon.net/
日時: 2006/06/22 4:10:04
ID: 16341
この記事の返信元:
[16326]
.NETアプリのタスクマネージャでのメモリ使用量について
ぶちゃらてぃ
2006/06/21 12:01:50
この記事への返信:
(なし)
ツリーを表示
■No16326に返信(ぶちゃらてぃさんの記事)
> ということは全ての.NETアプリは起動直後に自動的に一度最小化して元に戻すよ
> うなコードを入れた方が、メモリ効率という点からは有効なのでしょうか?
まさにその質問に対する答えが、↓にあります。答えは、「いいえ」だそうです。
The Memory Mystery
http://getdotnetco.web101.discountasp.net/GdncStore/free/Articles/The%20Memory%20Mystery.htm
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
よろしくお願いします。
.NETで開発したアプリは、たとえ単純にフォームだけを配置したものであっても、
起動直後にタスクマネージャでそのアプリのメモリ使用量を確認すると20MBも消費
しているように見えます。しかし、アプリを一度最小化するとメモリ使用量は5MB
程度に落ち着きます。なんでだーと思っていたのですが、下記の記事に答えがありました。
Windows業務アプリケーション開発 Q&A #1
http://www.atmarkit.co.jp/fdotnet/vblab/appqa_01/appqa_01_01.html
記事によれば、.NETアプリのタスクマネージャにおけるメモリ使用量は正確ではなく、
実際のメモリ使用量を得るにはSystem.GC.GetTotalMemoryを使えとあります。
C#でMessageBox.Show(System.GC.GetTotalMemory(false).ToString());
とすると実メモリ使用量は5MB前後のようです。
タスクマネージャから確認できるメモリ使用量はワーキングセットという事前に確保されたメモリ領域だそうです。
質問なのですが、このワーキングセットは実メモリ使用量とは違うとしても、
そのメモリ領域は確保されているのだから他のアプリからは使用できないはずです。
となると、.NETアプリが実際に使用しているのが5MBだろうと、ワーキングセット
として20MB確保していれば、その.NETアプリは20MBを消費しているとほぼ同義だと
思うのです。.NETアプリを起動して最小化せずにしばらく放置しておいてもタスクマ
ネージャの値は20MBから減りません。ここでアプリを最小化すれば5MBまで減りま
す。ということは全ての.NETアプリは起動直後に自動的に一度最小化して元に戻すよ
うなコードを入れた方が、メモリ効率という点からは有効なのでしょうか?