- ベストアンサー
メモリの消費とは?
- メモリを消費する時は、古い環境やバグのあるプログラム、3Dゲームをプレイするときです。
- メモリの消費はCPUの使用状況とは別で、CPUが100%使用されていてもメモリ使用率が50%以下になることもあります。
- メモリの消費量はシステムのスペックにも関係し、メモリ容量が大きいほど消費率が低くなる場合もあります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
例えば、プログラムを走らせるとします。 このとき、ハードディスクからプログラムがメモリーに転送され、実行されます。 またプログラムがデータを読み込みます。このデータは、メモリーに転送されます。 このようなタイミングで、メモリーは消費していきます。 質問にある、メモリーリークとは、 データを読み込み、それを使い終えたときに、 「使い終わりましたよ~」と宣言する操作を忘れた場合に起こります。 パソコン(OS)は、宣言が来たら空き領域に変更しますが、それが来ないので使用中と認識します。 もし、宣言がなされずに、どんどんデータを読み込んでいけば、 メモリーの使用量は増え続けていく結果となります。 「宣言のし忘れ」ですから、これは正常な動作ではありません。 正常なプログラムを走らせても、リークしませんから、使用量が増えることはありません。 3Dゲームもメモリーを消費しますが、 どちらかいうと、動画・静止画の処理のが、使う気がします。 1GBもあれば十分でしょうが、Photoshopなどで大きな画像を開くと、かなり消費されたことが分かります。 なお、100%は見ることは出来ないかも。 こうなると、フリーズすることのが多いような気がします。
その他の回答 (2)
- Toshi0230
- ベストアンサー率51% (836/1635)
No.1さんがだいたい回答してくれているので落ち穂拾いをば… メモリの使用量が増えてくると、使用頻度の少ないメモリ領域を順にHDD上のスワップ領域(Windowsだとページファイルという呼び方をします)に退避させて使用可能なメモリ領域を確保しようとします。 その為、大量のメモリを使用するアプリケーションを複数起動していたりすると、PCの動作は極端に遅くなります。No.1さんが「メモリ100%使用するとフリーズする」ということを回答していましたが、現実的にはフリーズする前に実用に耐えなくなります。 CPU負荷が100%でも普通に使用できている様に思えるのは、必要な計算が順次行われていて処理の「待ち」が殆ど発生してない(あるいは発生していても体感できる様な物になっていない)からです。 さらに、マウスの移動やキーの入力は「割り込み」と言って比較的優先的に処理されますのでそう感じやすいです。 前述のスワップ領域の使用量が増えてくると、往々にしてディスクへのアクセス頻度が多くなるため、処理の「待ち」が増えます。これは、ディスクのアクセス処理はCPUの計算に比べて遙かに遅いためです。このときはキー入力なども待たされることになり、遅さを実感できます。 (逆に言えば、メモリがスワップしていなければPCの使用にそれほどストレスは感じないと思います)
お礼
ご回答をありがとうございます。 いじわる操作で試しました。 IBMのThinkCentreで4つのワークスペース とそのうち沢山の動画を同時に再生したり、止めたり 3Dのアプリもやってみました。 $ free -s 5 でずっと見ていました。 4つの動画も行かないうちに遅くなりました。 メモリのフリースペースが50MBぐらいでダメかな? って感じでした。 色々と勉強になります。 また教えてください。 早くも聞いてもいいでしょうか? 別スレッドがいいと思いますが、 例えば、$ pingなど$ free -s 5もそうですが これを終わらせるために「q」を押すと終わる のもありましたが($ ps auxかな?)、 上記二つのコマンドは止まらなかったです。 止めるにはどうしたら良いでしょうか? もし良かったらお願い致します。 ありがとうございました。
- naznaz1111
- ベストアンサー率46% (64/138)
A#1です。 CPU負荷というか、利用率は、単位時間ないにどれだけCPUが使われているか、です。 単位時間というと難しいかもしれませんから、1秒あたりって考えてもいいでしょう。 例えば、1秒間に、OSが10%、アプリ1が50%使っていれば、利用率は60%になります。 もう1つ、OSの役割にスケジューリングというのがあります。 これは、どのタスクをどれくらいで、どの順番で動かすかということです。 OSは、いくつものタスクを、高速で切り替えて、 我々にとってはいくつものタスクが、同時に動いているように見せかけています。 さて、利用率100%がどのような状態かと言えば、 スケジューリングで埋めるべき時間が、すべて埋まってしまった状態です。 OSはタスクをこれ以上割り当てることが出来ませんから、 CPUを使わせてくれと、タスクが言って来ても、後回しにされます。 でも、「タスクを切り替える」ことそのもののタスクは、おそらく優先的に割り当てますから、 切り替え自体は問題なく進むことになります。 つまり、PCは動作し続けることが出来ます。 ただし、後回しにされるタスクが出てきますから、ユーザーにとっては動作が遅く感じます。 サーバーの件ですが、正直ストリーミングはやったことがないので、よくわかりません。 ただ、サーバーでも、普通のPCでも、ボトルネックになっている部分で、 もっとも処理が滞ります。 おっしゃるスペックならば、CPU・メモリは特に問題は感じません。 しかし、例えばハードディスクからの読み込みが遅ければ、 すべての処理がそれに影響され遅くなります。 遊んでいる時間が大きいって言った方が良いですかね。 何をやるにもスペックが良い方がいいに決まってますが、 このボトルネックが存在するならば、まずそのスペックをあげてやる方が、費用対効果がよくなります。 ハードディスクからの読み込みが遅いのならRAIDを組むとか、 RAMディスクを作成して、あらかじめそこに転送しておくなどの方法があります。 Youtubeのようなアクセスが多いサイトの場合、 ロードバランサというのをつかって、負荷分散を行っていることが多いですね。 個人レベルでそれを行うのは、少し難しいです。 昔HPサーバーを立てたことがありましたが、数アクセスで、もう遅さを感じました。 そのころは知識がなかったので、そのまま自宅サーバーは辞めちゃいましたが、 今だと、CPUも早くなってるし、どうなんでしょうね。 どこまでいけるかは分かりませんが、良い経験にはなるとは思うので、がんばってみてください。
お礼
お返事をありがとうございます。 そうですね。 「RAIDを組むとか、 RAMディスクを作成して、あらかじめそこに転送しておくなどの方法」 色々と難しそうです。 励ましてくださりありがとうございます。 他にもいっぱい聞きたい事があります。 でも少し間をおきます。 どうぞ、また宜しくお願い致します。
補足
つかぬ事ですが、64bitPCで $ free -s 10をやってみます。 どれくらいの違いがあるのか興味があります。 次回の質問の際は 宜しくお願い致します。
お礼
お返事ありがとうございます。 ほぼ解りました。 実はまだ先の話ですが、サーバを立ててみようと思っています。 動画サイトで「できればストリーミングサーバができれば・・・。」 と思っています。 出版社やフォーラムに問い合わせると「いいスペックのものがいい。」 との事でメモリ8GB、CPUがCore.i7を購入致しました。 この選択は正しいと思われますか? たびたびすみません。 ご返事お待ちしております。
補足
もう一つお聞きしたいです。 CPUの負荷が100%状態を続けているのに 普通にパソコンは動きます。 これも不思議です。 何故でしょうか? 教えてください。 サーバの件はYouTubeを利用しないでやりたいと思っています。 多分、よく解りませんが動画をエンコードするから いいスペックのものがいいのでしょう。 すみません。 色々と教えてください。