web-dev-qa-db-ja.com

コミットチャージは100%フルですが、ページファイルを使用しない場合、物理メモリは60%です

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

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

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

Commit charge graph vs Physical memory graphTask manager

25
Jason Oviedo

利用可能な容量がまだ多いときにコミット制限が不足するRAM異常ではありません。コミット制限もコミット料金も、空きまたは利用可能なRAMに直接関係するものではありません。

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

ページファイルがないので、コミット制限はページファイルがある場合よりも小さくなります。 RAM isfreeのどの程度でもかまいません。コミット制限については、= RAMinstalledが重要です。RAM無料または利用可能。

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

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

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

私の回答 here (長い)と here (はるかに長い)も参照してください。

26
Jamie Hanrahan

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 を参照してください。

4
cnst

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

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

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

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

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

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

その後、アプリを再インストールし、データをコピーして戻します。

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

2