まず最初に、より詳細な回答に入る前に。最初のスクリーンショットでは、非ページプール(カーネルメモリ使用量の一種)は1.3GBです。特に起動後わずか30分間、それは私には異常に高いようです。長時間使用した後、またはふるいのように漏れていたプログラムを使用すると、NPプールがこれほど高くなるのを見ることができたと思います。対照的に、私のNPプールは通常100〜200メガバイトであり、ページプールは400または500に達する可能性があります(それは、システムを数週間再起動せずに実行した後です)。
タスクマネージャーでいくつかの追加列を有効にするには、列ヘッダーを右クリックし、列の選択を選択します。あなたは追加する必要がありWorking Set (private)
、Working Set (shared)
、Commit
、とNP Pool
。すべてのユーザーのすべてのプロセスをスキャンし、約256 KBを超えるNPプールがあるユーザーを確認します。何か、特にかなり高いものが見られる場合、それが問題の原因であるか、少なくともその一部である可能性があります。
プロセスで使用されている物理メモリの量である合計ワーキングセットは、プライベートワーキングセットと共有ワーキングセット(WS)の組み合わせです。通常、プライベートはほとんどのプロセスでより大きくなりますが、共有WSを大量に使用するものもあります。通常、この2つは合計WSになります。コミットは、バッキングストア(ほとんどの場合、Windowsページファイル)にコミットされたワーキングセットの量です。バックグラウンドアプリケーションは、多くの場合、WSよりも多くのコミットを持ちます。これは、ページプールの多くがメモリからページングファイルにスワップされたことを示します(最小化され、しばらく使用されていないデスクトップアプリではかなり正常です)。
非ページプールは、物理メモリからスワップアウトできないメモリであり、物理メモリからスワップアウトされることはありません。つまり、実質的に永続的な最小物理メモリ使用量です。NPプールメモリには、プログラムコードと、物理メモリ内に正しくまたは安全に動作する必要があるクリティカルセクション、特別なヒープなどが含まれていることがよくあります。60個のプロセスのうち、すべてがNPプールメモリ256KB約15,360KBです。ほとんどの場合、1つまたは2つのアプリに256KBのNPプールがありますが、ほとんどのアプリはそれよりも少なく、多くの場合かなり少ない(またはまったくありません)システムがすべてのプロセスのワーキングセット全体をページアウトする可能性は非常に低いため、メモリ使用量がこれほど低くなることを期待しないでください。
最後に、メモリを増やすことのポイントは、物理ディスク上の拡張メモリスペース(スワップ、ページファイル)との間でデータをページングする必要を回避することです。ページングは、割り当てられた物理メモリのブロックを移動し、一部をディスクにプッシュし、他をディスクから物理メモリに取り込むプロセスです。ページングは、単純にするために、非常に望ましくありません。それ自体は「悪い」わけではありませんが、あまりにも頻繁に発生すると、パフォーマンスを損なう可能性があります。システムの合計物理RAMを増やす最終的なポイントは、より多くのプロセスがより多くのコミットを物理メモリ(より大きなワーキングセット)に保持できるようにすることです。メモリの消費は問題ではなく、実行するプロセスの数が多いほどメモリの使用量が多くなると、通常、システム全体のパフォーマンスとアクティブなプロセスのパフォーマンスが高くなり、
Windowsはメモリを管理し、メモリ内外のデータをページ(スワップ)ファイルとの間で自動的にページングします。9GBのメモリを必要とするプロセスを実行し、システムがすでに4GB(12GBのうち)を使用している場合、システムはワーキングセット全体への即時アクセスを必要としないプロセスを自動的に判断し、一部またはすべてをページングしますその余分な1GBを解放するために、ページプールのスワップにスワップします。最終的に大きなプロセスがより多くのメモリを必要とする場合、新しく要求されたブロックを割り当てるのに十分な空き領域ができるまで、ウィンドウは他のプロセスのワーキングセットをさらに削減します。大規模なプロセスは、最終的にNPプールを除くすべての利用可能なメモリを消費する可能性があり、Windowsがより多くのワーキングセットを解放できないプロセスを定期的に実行するためのオーバーヘッドが最小限になる可能性があります(i。e。Windowsが物理メモリからスワップアウトする保留中のページフォールトがありますが、要求されているため、移動できません。
プロセスがアクセスを許可されているよりも多くのメモリを必要とする場合(32ビットプロセスは通常2Gbにアクセスでき、64ビットプロセスは通常それぞれ約48Gbのメモリにアクセスできますが、4Gbには少しずつアクセスできます)、ウィンドウは時々試行しますスワップ空間でメモリを仮想化します。32ビットアプリが最大許容2Gbのスペースを使用したいが、1.2Gbしか使用できない場合、Windowsはページファイルに完全な2Gbを予約し、必要に応じてプロセス自身のデータをページファイルに出し入れします。アプリのメモリ使用量をサポートします。この場合の合計「メモリ」使用量は、Total Commitを実行すると、使用可能な物理メモリよりも大きくなる可能性があります。合計コミットは通常、総ページファイルサイズで最大になります。これは、システムによって管理される場合、通常物理メモリ量の2〜3倍です。あなたの場合、
最後のポイント。あなたはあなたの答えであなたが16GbのRAMを持っていると言いました、そこではタスクマネージャはRAMの12Gbしか見ることができません。ここにある2つのことの1つ。システムに実際に搭載されているRAMは12Gbのみであるか、スティックの1つが正しく登録されていません。ラムのスティック(4Gbの4xスティックを想定しています)の場合、不良であるか、マザーボードに完全に正しく装着されていないか、マザーボードにメモリ検出の問題がある可能性があります。
後者かどうかを確認するには、まずマザーボードBIOSを最新バージョンに更新する必要があります。私は同様の問題を抱えていました... 6つのトリプルチャンネルDDR3スティックのラム(6x 2Gb)は、それぞれ個別にテストすることに基づいてすべて良いものでした...しかし、私のマザーボードはランダムに1つまたは2つを数えないことに決めました、多くの場合、8GBのRAMしか残されていません。BIOSの更新により問題が修正され、今ではメモリのすべての12Gbに確実にアクセスできます。