VC++6.0でプログラミングを行なっております。
今作成しているプログラムではかなりの数のグローバル変数を使用します。
将来的にメモリ不足が怖くなってくるのでお聞きします。
1つのプログラムを動作させる上で変数に確保できるメモリ領域は
一定量を超えると好ましくないといったような基準は存在するでしょうか?
ちなみにOSはWINXPでメモリは512M(CPUはPen4-1.8G)です。
なにも起動しない状態(OSと最低限の常駐ソフト)でのメモリ使用量は100M程度です。
今のところ全変数をSizeofで測ってみたところ2M程度でした。
変数領域に10M程度はほしいのですが特に問題はないでしょうか?
勘違い等あるかもしれませんがアドバイスがありましたら
よろしくお願い致します。
>1つのプログラムを動作させる上で変数に確保できるメモリ領域は
>一定量を超えると好ましくないといったような基準は存在するでしょうか?
そういう都合のいいものは私は知りません。が、現在の Windows はマルチ
スレッド、マルチタスクで動作するのであなたが気にしているプログラムが
実行中に占有するメモリー量が少なくても、他のプロセス(タスクともいう
ことがあります)がやたらにメモリー食いの場合困ったことがおきないとは
言い切れません
つまり、現在の動作環境でどの程度メモリーに余裕があるのかが問題になる
のではないかと考えています(*)
あくまでも、特定のプログラムがメモリーを食い尽くす様なイケナイことを
しているあると思われるときの判断材料として使う簡便な方法として下の
やり方を紹介します
NT 系統ではタスクマネージャーのパフォーマンスタグにメモリー使用量の
履歴が折れ線グラフに出てきます。そこで見る場合は、7割程度を超えた場合
危険水準だと目安をつけています
(* 32bit OS の Windows では仮想記憶なので、実記憶の消費量などは余り
意味がありません。ユーザーに使える実記憶とページファイルの量との合計
の内利用可能な量がどの程度残っているかが大切でしょう。簡単にいうと幾ら
仮想記憶でもページアウトできなくなればそこで終わりですから)
仮にそのPCが貴方が作成するプログラム専用で他に特にプログラムが起動されることはないと
言う話なのでしたら、OSが不安定にならないレベルでリソースを使うことはありえると思いま
す。
この場合、テンポラリで使用するHDの容量なども含みます。
明確にこれ以上は駄目という基準はありませんが、他のプログラムと共存する必要がある場合、
メモリを大量に消費し、システムに負荷を与えるようなプログラムが歓迎されないのは、自明の
理です。
従って、貴方が作成しているプログラムに位置付けがどういったものなのかを明確にしないで
この議論を行ってもあまり意味がありません。
連携が要求されるようなプログラムであれば、メモリを大量に使用するようなソフトは敬遠され
るでしょう。それが原因でビジネスチャンスを失うかもしれません。
それでも昨今の大容量化によって必要メモリが大きなアプリが実際に出回っているのも事実で
す。
必要メモリが大きいと言うことは動作する環境を選ぶと言うことです。
できれば、ある程度、動作スピードが遅くなってもメモリの消費量を抑えるモードを用意する必
要が
あるかもしれませんし、搭載メモリ量から使用メモリ量を自動算出してその中でやりくりする必
要が
あるかもしれません。
そういった意味はわかっているから
「1つのプログラムを動作させる上で変数に確保できるメモリ領域は
一定量を超えると好ましくないといったような基準は存在するでしょうか?」
と言うことであれば、具体的なものはないというのが回答かと思います。
ご回答ありがとうございます。
該当プログラムは試作段階ですので1機のみの開発になります。
つまり私のマシンのみで動けばOKって感じですね。
メモリの使い方に関して実際にはWIN上でさまざまなものが
関連しているようですので変数の多さなどではなく一概に決まらないということが
分かっただけで非常に助かりました。
従って当面は実際に動かしながら手探り状態で進めていくことにして見ます。
(メモリ7割を目安に・・・)
ありがとうございました。
