- PR -

メモリ消費について

1
投稿者投稿内容
K2
会議室デビュー日: 2004/10/20
投稿数: 2
投稿日時: 2004-10-20 22:33
初めて参加させていただきます初心者です。現在VB.NETにてwindowsアプリケーションの作成にチャレンジしています。内容は、データベースに保存された予定データを読み取り、ビットマップを使ってガントチャートを描写するものです。データベースには複数のクライアントから更新がされるため、ガントチャートのビットマップは1分に一回更新されるようにtimerにて設定をしています。

そこで質問なのですが、アプリケーションを起動してしばらく後に、windowsのタスクマネージャーでメモリ使用量を見ると使用量がダントツにほかのアプリケーションより多くなっています。そして、フォームのサイズを変えるなど、なにかしらアプリケーションに行うと、とたんに使用量が減るのですが、これってどういうことなんでしょうか?
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2004-10-21 10:31
こんにちは。

>フォームのサイズを変えるなど、なにかしらアプリケーションに行うと、
>とたんに使用量が減るのですが、これってどういうことなんでしょうか?

これって自分も最初.NETでWindowsアプリケーション作ったときに同じことを思いました。
顕著なのがウィンドウを最小化したときで、タスクマネージャで見るとメモリ使用量が10分の1位まで少なくなって見えます。
「おお、最初に最小化しとけば、メモリ使用量少なくてすむよ」と思いましたが、
後で誤った認識であるとわかりました。タスクマネージャで、仮想メモリサイズを表示してみてください。
こちらが、アプリが実際に確保しているメモリ量ですが、こちらのサイズはウィンドウを最小化しても殆ど数値が変わらないことが分かります。つまり仮想メモリへスワップされているだけで、アプリケーションが必要とするメモリ量は変わらないってことです。ただ.NETで作成されたWindowsアプリケーションは起動時に必要とする物理メモリが、.NET以外で作成されたアプリより多めに必要ってことでしょうか。(起動時だけでなく、全体的に見てもメモリは多く必要みたいですが)

しかし、物理メモリの使用量が一時的に減るので、別アプリケーションへの影響が少なくなるかもしれませんし、確保しているだけで使わないメモリはスワップされたままになる可能性もあるかもしれない(?)ので、少しの効果は期待できるかもしれませんね。。。
Lichtenstein
ベテラン
会議室デビュー日: 2003/11/06
投稿数: 61
投稿日時: 2004-10-21 13:03
こういうメモリの開放は、時間がかかるので後回しにされているのでしょう。
で、最小化とか、再描画とかする時まとめて処理すると。多分。

ハードディスクへのスワップが始まらなければ、そんなに遅くなるものじゃないですしね。
1

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