コミット料は100%満杯ですが、ページファイルを使用しない場合の物理メモリはわずか60%です


25

システムでページファイルを無効にしました(ハードディスクが遅すぎる、すぐに新しいものを購入できない、ページファイルを別のパーティションに移動できない)。メモリを要求するアプリケーションを使用してリソースモニターを見ると、システムはコミットチャージがほぼ100%満たされていることを示しています。実際、より多くのメモリを要求し続けると、コミットチャージが事実上100%に達するとプログラムがクラッシュし始めます。

その間、システムは、物理メモリを50〜60%しか使用せず、約1GBのメモリを使用できる(無料+スタンバイ)と言います。

コミットチャージが実際に要求されたメモリの合計である場合、システムが大量のメモリが空いていると表示する理由 物理メモリはWindowsによって使用されていませんか?メモリグラフは間違っていますか?何か不足していますか?

コミットチャージグラフと物理メモリグラフ タスクマネージャー


2
トピックに関するもう一つの良い答えはここにある:brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7
cnst

@cnst非常に良い記事。この問題を理解するのに役立ちました。返信として投稿してみませんか?
ジェイソンオビエド

2
ページファイルのユーザーを無効にしないでください。これは馬鹿げたアイデアです
ミルニー

@Milney同意します。通常、ページファイルを無効にするべきではありません。質問の瞬間に、ディスクがあまりにも遅すぎたので、私にとっては理にかなっていました。この質問を促すことは別として、システムの一般的な応答性は何度も改善されました。
ジェイソンオビエド

@JasonOviedoそれはそうではなく、何かが非常に間違っていることを示しています。システムのオプションを増やしても、遅くなることはありません。システムがページファイルを持っているからといって、ページファイルを使用する必要はありません。(これはおそらくXY質問であることを意味します。正しい質問は、ページファイルによってシステムが遅くなった理由です。)
デビッドシュワルツ

回答:


26

使用可能なRAMがまだたくさんある間にコミット制限がなくなることは、まったく珍しいことではありません。コミット制限もコミット料も、空きまたは使用可能なRAMに直接関係しません。

コミット制限=現在のページファイルサイズ+ RAMサイズ。

ページファイルがないため、コミット制限はページファイルがある場合よりも小さくなります。RAMの空き容量は問題ではありません。コミット制限については、インストールされている RAMの量のみが 重要です。RAMの90%が空きまたは使用可能であっても、コミット制限を使い切ることができます。

コミットチャージは、物理メモリではなく仮想メモリのカウントです。私のプログラムがコミットされた2 GBを要求したが、それから.5 GBのみにアクセスするとします。残りの1.5 GBは決してフォールトされず、RAMにも割り当てられないため、RAMの使用量は2 GBを反映せず、0.5 GBのみです。

それでも、システムが2 GBを保持する場所があることをシステムが「コミット」しているため、「システムコミット」は2 GB増加します。プログラムを実行しても、必ずしもすべてを使用しようとするわけではないという事実は役に立ちません。2 GBを要求しましたが、その呼び出しからの戻りが成功すると、OSが「コミット」された、つまり約束されたとおりに、そのくらいの仮想アドレス空間を使用できることがわかります。OSは、すべてを保持する場所がない限り、その約束をすることはできません。

そのため、一度にページファイルを戻すか、RAMを追加するか、実行するリソースを減らします。または、3つの組み合わせ。これらは、「メモリ不足」および「メモリ不足」エラーを回避するための唯一のオプションです。

こちら(長い)とこちら(ずっと長い)の私の回答もご覧ください。


3
具体的には、Windowsがメモリを割り当てる前に、使用時にこれらの割り当てを確実に満たせるようにする必要があります。割り当てが完全に使用されていない場合でも、Windowsはその保証ができない場合、それ以上の割り当てを拒否します。ページファイルは、使用されているかどうかにかかわらず、追加のバッキングストレージを提供します。
ボブ14

4

http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/の記事のメモリ割り当てテストが示すように、Windowsは大きなメモリ割り当てに失敗するタイプのシステムですそのような割り当てが、以前のすべての割り当て(Microsoftが「コミット」と呼ぶ概念)と合わせて、合計「コミット」を物理メモリとすべてのページファイルの合計(スワップ)の合計よりも高くする場合。

前述の割り当てのプロセスの仮想アドレス空間内で読み取りまたは書き込みが行われる前に、割り当て自体が実際のメモリ(物理メモリでもスワップでもない)を使用しないことを考慮してください。たとえば、2GBの割り当て自体は「コミット」数にのみ影響し(Windows 7の話では)、「物理メモリ」はそのまま(割り当て内で読み取り/書き込みが行われるまで)残ります。

OSの設計に関する限り、別のアプローチは常にサイズの割り当てを許可し(使用可能なメモリが既に完全に使い果たされていない場合)、代わりにアプリケーションが読み取り/書き込みで失敗するようにすることです。詳細については、https://cs.stackexchange.com/questions/42877/when-theres-no-memory-should-malloc-or-read-write-failを参照してください。


2
はい。Windowsのアプローチの議論:プログラマがmalloc(またはWin32ではVirtualAlloc)のステータスをチェックすることを期待するのは合理的です。その呼び出しが成功すると、プログラムは割り当てられたvasが使用可能であることを信頼でき、対応するfreeまたはVirtualFreeまで使用可能になります。他の方法では、通常のメモリの読み取りと書き込み(つまり、ポインタの逆参照)により、メモリアクセス例外が発生する可能性があります。ただし、すべてのポインターの逆参照後にステータスを確認する必要があると考えているプログラマーはいません。とにかくステータスを返さないので、例外ハンドラで処理する必要があります。醜い。
ジェイミーハンラハン

2

使用可能なメモリは、あなたが思っているほどのものではありません。実際には、最近終了したプロセスまたはトリミングされたプロセスのファイルキャッシュであり、一部のメモリを他のプロセスに強制的に放棄していました。彼らはそこに元の目的に呼び戻すことができます。詳細については参照してください。

http://support.microsoft.com/kb/312628

ページファイルがないように、これは非常に悪いです。Windowsを使用しないと、Windowsのパフォーマンスは低下します。ページファイルがない場合でも、実行可能ファイルでさえスワップファイルとして使用されることに注意してください。ドライブの速度が遅い場合でも、最大8〜16ギガのメモリが確保されるまでページファイルを保持することをお勧めします。一部の人々は、windows 7でさえ、それなしで実行できると考えています。

私は定期的にいくつかのことをすることで古いマシンを後押ししています。ハードドライブをできるだけクリーンアップします。ドライブから一時的に削除できるものはすべて、バックアップにコピーします。不要なアプリケーションを削除します。アプリを削除すると再インストールできます。

すべて完了したら、ハードディスクを最適化します。その時点で、ページファイルを再作成します。可能な限り、ドライブの前面に最も近くなります。メモリの約1.5倍の固定サイズを作成します。それが私のルールです。通常、1〜3回の時間メモリのサイズを見てきました。これにより、通常の場所に比べて速度がわずかに向上します。

私はauslogicデフラグツールを無料で使用しています(ただし、より多くのツールの広告)。他にもこれを行うものがあります。portableapps.comでデフラグツールを確認してください。最近アクセスしたファイルをドライブの前面近くに配置して、アクセスを高速化することにより、ディスクを最適化します。ページファイルの場所が表示されるため、ドライブの上位25%に移動したかどうかを確認できます。

その後、アプリを再インストールし、データをコピーしてください。

私はあなたが10または20%のブーストを得ると言うでしょう。しかし、主な価値は、スムーズな体験のために多くのためらいがなくなることです。


3
いくつかのテストを使用すると、ディスクが遅すぎる場合、ページファイルがないことでシステムが実際に高速化されることは明らかです。アプリの切り替えなどの単純なタスクで、数秒の違いがわかります。
ジェイソンオビエド

@Markあなたは間違っています。大部分のWindowsシステムはページファイルで実行されます(これはWindowsがデフォルトで実行される方法であり、十分かつ十分な理由があるためです)。ほとんどすべてのシステムは同程度の速度のディスクを使用します。そして、そのような問題を示すものはほとんどありません。問題は「ページファイル」ではなく、十分なRAMがないことです。ページファイルを削除しても、ディスクへのページングとディスクからのページングは​​削除されないことに注意してください。通常、ページングに関係する数百のファイルの1つを削除するだけです。
ジェイミーハンラハン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.