メモリ使用量を少なくするには?

解決


柚子  2009-05-15 19:48:12  No: 70151

質問させて頂きます

現在、非常に軽量化したソフトを開発しようと思っているのですが
タスクマネージャーで見ると、WinMainの中身を空にしても最低4Mは使用しています。

フリーソフトでは使用量が1M切ってるのも見かけたりしますが
これはどのようにして軽量化しているのでしょうか?

今の時代、数M程度は気にもならない程度になっておりますが
メモリの軽量化を目指しての開発をしたいと思っております。

どうぞよろしく御願いします。


tetrapod  2009-05-15 21:23:59  No: 70152

なんとか.DLL をたくさんリンクしているとタスクマネージャ上の【見かけ】のサイズが大きくなるので
たぶんそういうことなんぢゃないかなー・・・と

コンソールアプリケーション main() { Sleep(); } だけでも、タスクマネージャ上の見かけで 600K 食うわけで。
本当にメモリを食っているかどうかは、タスクマネージャ上の見かけの数値にだまされないよう、
よく注意して測定しないといけないよ


仲澤@失業者  2009-05-15 21:45:56  No: 70153

対象OSが書かれていませんので仮にXPとします。また、Embedded OSでない
と仮定します。まず、OSが200〜250MByteほど使用しますので、OS自体を
安定して動作させるのには物理メモリが512程度は必要となります。
仮にアプリケーションが10MByte消費した場合。
  1.これは空きメモリーの3%を占有しているに過ぎない。
  2.半分にできたところで1.5%の改善にしかならない。
ということになります。
次に、メモリー消費を無理に抑えると、
  3.当然処理が遅くなる。
ので、常識的に、これらの努力はユーザーの評価の対象となるものでは
ありません。むしろ迷惑になるわけです。
んで、メモリ使用量を抑える一般的な方法は
  A.登録クラス及びWindowを作らない。一切の表示を行わない。
  B.リソースを含めず、使わない。
  C.メモリーアロケーションしない。
細かな注意としては
  D.必要になるまで使わない(スタック/ヒープ/フリーストア)
  E.不要になったらすぐに破棄する(同)
当然MFCは使わないでしょうから
  F.コールバックを1つにまとめる
等が考えられます。


aetos  2009-05-15 23:57:12  No: 70154

個人的にお勧めしませんけども。
http://homepage1.nifty.com/kazubon/progdoc/tclock/nodeflib.html


柚子  2009-05-16 03:12:06  No: 70155

レス有難うございます。

>tetrapod様
成る程。私の環境でmain(){Sleep();}では1.2Mと表示されました
仰るとおり本当にメモリを食ってるかは分からないのですね

>仲澤@失業者様
申し訳ございません。OSはXP SP2です。
詳細に書いて頂き有難うございます。
>  3.当然処理が遅くなる。
>ので、常識的に、これらの努力はユーザーの評価の対象となるものでは
>ありません。むしろ迷惑になるわけです。
確かにその通りですね。某所でメモリの使用量を気にする意見を見かけ
メモリの軽量化も意識しましたが
やはりメモリを上手く利用し、処理速度の向上を行うのが良いですね。
眼が覚めました。

>aetos様
そのようなテクニックがあるのですね。
>・Cの標準関数や処理系が用意した関数が使えない。Windows APIしか使えない。 
と、Cの標準関数が使えないのは痛いですが、知識の一つとして学んでみます。

レスをして下さった皆様本当に有難うございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加