2009-02-28 1 views
7

Microsoft OutlookやEclipse IDEのようなアプリケーションは、RAMを200MBも消費します。最近のアプリケーションでは、256MBのRAMしか搭載されていないので、それほど多くのメモリを消費するのは問題ありませんか?また、なぜこれが起こっているのですか?リソースを当然のものとしていますか?最新のアプリケーションで大量のメモリを消費することは合理的ですか?

答えて

9

ほとんどの人がPCSに1または2ギガバイトのRAMを持っていれば問題ありませんか?

これを考えてみましょう。あなたの200MBが小さく、2Gbの制限があると心配するものはありませんが、他の誰もRAMを大量に使用するアプリケーションを持っています。それらを一緒に追加し、私は非常にすぐにすべてが使い果たされている2Gbを見つける。最終的な結果 - あなたのアプリは遅く見え、リソースが不足しており、起動に時間がかかります。

私は、人々がリソースを必要とするアプリケーションに対して「価値のあるもの」を得なければ反抗するだろうと考えています。仮想化されたシステムが普及するにつれて、これがサーバー上で起き始めるのを見ることができます。人々はリソース要件とそれに対応するサーバーコストについて不平を言っています。

現実世界の例として、私は以前の512Mb 1.7GHzマシンでVC6を使用していましたが、状況は良好でした。Outlook、Word、Webブラウザとともに4〜5枚のコピーを開くことができました。応答する。

今日私は3Gb RAMを搭載したデュアルプロセッサ2.8Ghzサーバーボックスを持っていますが、実際には2台以上のVisual Studio 2008を実行することはできません。私たちが現在持っている他のスタートアップコストといっしょに)、Wordでさえ文書を読み込むまでに時間がかかります。

だからあなたはあなたがすべきメモリ使用量を減らすことができます。あなたが誇大な枠組み/図書館/練習を何もせずに使いたいと思ってはいけません。

4
+0

ゲートの法則はそれをよく表しています。 – chappar

+1

ワースの法則はとても正しい - 私が80年代にメインフレームの仕事をしていたとき、500ミリ秒以上の時間を要した画面では、最適化が必要だった。そして、いくつかのWebページが現在どれくらいの時間ロードされているかを見てください! –

+0

@chappar。誰もが十分な640kの1つを意味しますか? – SystematicFrank

3

あなたが考える必要が物事のカップルがあります。

1 /あなたは256M を持っていますか??私はそうは思わないでしょう - 私の最小のメモリマシンは2Gなので、200Mのアプリケーションはあまり問題にはなりません。

2a /あなたが話す200Mについては、「実際の」メモリではない可能性があります。アドレス空間であっても、一度にすべてが物理メモリに収まらない場合もあります。いくつかのビットは、あなたが難解なことをするときに物理メモリに引き込まれるだけです。

2b /他のプロセス(DLLなど)間で共有することもできます。つまり、1つのコピーとして物理メモリに保持されるだけで、多くのプロセスのアドレス空間に存在することができます。そうすれば、その使用量は多くのプロセスにわたって償却されます。 2aと2bの両方は、200Mの数字が実際にどこから来たかによって決まります(私は知らないし、Linuxを使っていますが、私にあなたが言わないとわからないことはありません:-)。

3 /物理的なメモリであっても、現代のオペレーティングシステムは古いDOSやWindows 3.1に似ていません。アプリケーションのビットをページアウト(データ)したり、実行可能ファイルから常にリロードできます)。仮想メモリを使用すると、実際の物理メモリよりもはるかに多くのメモリを使用できます。

+0

WindowsのタスクマネージャーでMem Usageが200MBと表示されている場合、そのメモリはどのメモリを参照していますか?それはまた、アプリケーションが使用しているdllメモリを含んでいますか? – chappar

+0

http://stackoverflow.com/questions/588882/unmanaged-vc-applications-memory-consumption-on-windows-serverを参照してください。他のメンバーが、あなたにその情報を示す「プロセスエクスプローラ」についての回答を投稿しました。 – uzbones

+0

私は物理的または仮想的なメモリについて話していません。私はアプリケーションの総メモリ使用量について話しています。仮想メモリは、アプリケーションが限られた物理メモリ内で膨大なメモリを使用する方法です。したがって、物理メモリが小さい場合は、OSがスワップインしてスワップアウトする必要があるため、マシンの速度が遅くなります。 – chappar

1

数年前、256 MBがPCの標準であったとすると、Outlookは約30〜35 MBほどのメモリを消費しました。これは利用可能なメモリの約10%です。今のPCは標準で2 GB以上、見通しは200MBのメモリを消費し、それも約10%です。

第1の結論:より多くのメモリが利用可能であるほど、アプリケーションはより多くを使用します。

第2の結論:どのような時間枠を選んでも、真のメモリ豚(Outlookなど)であるアプリケーションと非常に効率的なメモリ賢明なアプリケーションがあります。

第3の結論:アプリのメモリ消費は時間とともに下がることはできません。そうでなければ、今日でも640Kで十分でした。

3

現代の多くのアプリケーションは、より多くをキャッシュするために、より多くのメモリのexistanceを利用します。 firefoxやSQLサーバーのようなものは、どれくらいのメモリを使用するかを明示的に設定しています。私の意見では、利用可能なメモリを使用しないことは愚かです。あなたのアプリケーションがすべて10MBで座っていて、物理メモリの90%が未使用のままであれば、2GBのRAMを持つ点は何でしょうか。もちろん、あなたのアプリがこのようなキャッシュを使用している場合は、ページファイルのスラッシングが開始された場合にそのメモリを解放したり、キャッシュサイズを手動で制限することができます。

あなたは、SQLサーバーに対してまともなサイズのクエリを実行することにより、この利点を見ることができます。クエリを初めて実行すると、10秒かかることがあります。しかし、その正確なクエリを再度実行すると、1秒未満がかかります。なぜですか?クエリプランは最初にコンパイルされ、後で使用するためにキャッシュされました。読み込みが必要なデータベースページは、初めてディスクからロードされただけでした - 2回目は、RAMにキャッシュされていました。正しく実行されると、キャッシュに使用するメモリが増え(ページングを実行するまで)、データがすぐにアクセスできるようになります。大きな文書(WordやAcrobatなど)にも同じことが表示されます。文書の新しい領域にスクロールすると処理が遅くなりますが、レンダリングされてキャッシュされると処理が高速化します。十分なメモリがない場合、そのキャッシュは上書きされ始め、ドキュメントの古い部分に行くのが遅くなります。

2

RAMをうまく活用できる場合は、責任度です。

+0

それを使用するだけでなく、それを責任感を持って使用することです。 –

0

それは完全にアプリケーションに依存します。

2

はい、これは完全に正常です。また、256MBが正常だったので大きなものが変更されました...そして、640Kbがすべての人にとって十分であると思われる前にそれを忘れないでください! C#、Java(登録商標)、ルビー、Pythonの...誰もがそれらを愛する確かに開発がより速くなる可能性があるため、しかし1つのグリッチがある:

今ほとんどのソフトウェア・ソリューションは、ガベージコレクタでビルドされています。

同じプログラムは、手動または自動のメモリ割り当て解除のいずれかと空きメモリリークが発生することができます。しかし、2番目のケースでは、メモリ消費量が増加する可能性があります。どうして?最初のケースでは、メモリは割り当てが解除され、何かが無駄になった直後に清潔に保たれます(ごみ)。しかし、それを自動的に検出するには時間と計算力が必要であるため、ほとんどのコレクター(参照カウントを除く)は、探査のコストに値するためにゴミが溜まるのを待ちます。より多くのゴ​​ミを待つほど、一回の打撃で掃除することができますが、そのゴミを蓄積するためにはさらに多くのメモリが必要です。コレクタを強制的に強制しようとすると、プログラムは自分の問題に取り組むよりも多くの時間をメモリに費やします。

プログラマがより多くのリソースを得ている限り、より多くの自由度、抽象化、およびより速い開発と引き換えに、より重いツールを使用してそれらを犠牲にします。

関連する問題