さて、まず最初に、私がより詳細な回答に入る前に。最初のスクリーンショットでは、Non-Paged Pool(カーネルメモリ使用量の一種)が1.3GBになっています。これは私には異常に高いように思えます、特に起動後30分しか経っていないのに。長時間使用したり、ふるいのように漏れているプログラムを使用したりすると、NP プールがこれだけ高くなるのがわかると思います。対照的に、私のNPプールは通常100~200メガバイトで、ページ化されたプールは400~500にもなるかもしれません(これは何週間も再起動せずにシステムを動かした後の話です)
タスクマネージャでカラムヘッダを右クリックしてカラムの選択を選択することで、いくつかの追加カラムを有効にすることができます。Working Set (private)
, Working Set (shared)
, Commit
, NP Pool
, 0x6& を追加してください。私は、全ユーザの全プロセスをスキャンして、NPプールの容量が約256KBを超えるものがないかどうかを確認します。特にかなり高いものがあれば、それが問題の原因か、少なくともその一部である可能性があります。
プロセスが使用している物理メモリの量である総ワーキングセットは、プライベートと共有ワーキングセット(WS)の組み合わせです。通常、ほとんどのプロセスではプライベートの方が大きくなりますが、一部のプロセスでは共有WSをより多く使用している場合があります。通常はこの2つを合計してWSの合計とします。コミットは、バッキングストア(ほとんどの場合、Windowsのページファイル)にコミットされた作業セットの量です。バックグラウンドにあるアプリケーションのコミット量は WS よりも多くなることが多く、これは、ページングプールの多くがメモリからスワップアウトされてページングファイルに書き込まれたことを示しています(これは、最小化されてしばらく使用されていないデスクトップアプリケーションの場合にはごく普通のことです)。
非ページングプールとは、物理メモリからスワップアウトされることができないメモリであり、今後もスワップアウトされることはありません。NPプールのメモリには、プログラムコードや、正しく動作するために物理メモリ内になければならない重要なセクション、特殊なヒープなどが含まれていることがよくあります。60プロセスのうち、すべてのプロセスが256KBのNPプールメモリを持っている場合、あなたの絶対的な最小物理メモリ使用量は約15,360KBになります。ほとんどの場合、1つまたは2つのアプリが256KBのNPプールを持っているかもしれませんが、ほとんどのアプリはそれ以下で、多くの場合はかなり少ない(または全く持っていない)でしょう。システムがすべてのプロセスのワーキングセットをページアウトする可能性は非常に低いので、メモリ使用量がそこまで低くなることはないと考えてください。
最後に、メモリを増やすポイントは、物理ディスク上の拡張メモリ空間(スワップ、ページファイル)との間でデータをページングするのを避けることです。ページングとは、割り当てられた物理メモリのブロックを移動させ、いくつかのブロックをディスクにプッシュし、他のブロックをディスクから物理メモリに取り込むことを含むプロセスです。ページングは、簡単に言えば、非常に望ましくないものです。それ自体は「悪い」ことではありませんが、あまりにも頻繁に発生すると、パフォーマンスの足を引っ張ることになります。システムの総物理 RAM を増やす究極のポイントは、より多くのプロセスがより多くのコミットを物理メモリに保持できるようにすることです(作業セットをより大きくする)。メモリを消費することは問題ではなく、より多くの実行プロセスがより多くのメモリを使用すると、メモリアクセスに関連した物理ディスク活動(特にページフォルト)が低下するため、システム全体のパフォーマンスとアクティブプロセスのパフォーマンスが通常より高くなります。
Windowsは、あなたのためにメモリを管理し、あなたのために自動的にメモリ内のデータをページ(スワップ)ファイルに出し入れします。9GBのメモリを必要とするプロセスを実行していて、システムがすでに4GB(12GBのうち)を使用している場合、システムはどのプロセスが作業セット全体への即時アクセスを必要としないかを自動的に判断し、余分な1GBを解放するために、ページ化されたプールの一部またはすべてをスワップにページアウトします。大規模プロセスが最終的により多くのメモリを必要とする場合、windows は、新たに要求されたブロックを割り当てるのに十分な空き領域があるまで、他のプロセスの作業セットをさらに削減します。大規模プロセスは最終的には NP プールを除くすべての利用可能なメモリを消費し、Windows が作業セットをより多く解放することを許可していないプロセスを定期的に実行するための追加の最小限のオーバーヘッドが発生する可能性があります (つまり、それらのプロセスには保留中のページフォルトがあり、Windows が物理メモリからスワップアウトしてしまうが、それらは要求されているために移動できない)。
プロセスがアクセス可能なメモリ以上のメモリを必要とする場合(32bit プロセスは通常 2Gb、拡張技術を使えば 4Gb 未満のメモリもありますが、64bit プロセスは通常それぞれ約 48Gb のメモリにアクセスできます)、windows はスワップスペースを使ってメモリを仮想化しようとすることがあります。32 ビットのアプリが最大で許可されている 2Gb のスペースを使いたいが、1.2Gb しか利用できない場合、windows はページファイルに 2Gb を完全に確保し、アプリのメモリ使用量をサポートするために、必要に応じてプロセス自身のデータをページファイル内で移動したり、ページファイルの外で移動したりします。この場合の総「メモリ」使用量は、利用可能な物理メモリよりも多いように見えるかもしれません。トータルコミット。総コミット量は通常、総ページファイルサイズの最大値となり、システムが管理している場合、通常は物理メモリ量の 2-3倍になります。あなたの場合、トータルコミットは約 24Gb、つまり 12Gb の物理メモリの 2 倍になります (これは最初のスクリーンショットで示されており、「コミット (GB) 3 / 23」と記載されています)。最初のスクリーンショットでは「コミット (GB) 3 / 23」と表示されています)。)
最後のポイントです。あなたは回答の中で、16GBのRAMを持っていると言いましたが、タスクマネージャは12GBのRAMしか見ていません。ここでは2つのことが考えられます。あなたのシステムが本当に12GbのRAMしか持っていないか、あるいは1つのスティックが正しく登録されていないかのどちらかです。もしRAMのスティック(私は4Gbのスティックを4x4本と想定しています)が故障している場合は、それがマザーボードに完全に固定されていないか、またはマザーボードがメモリ検出に問題を抱えている可能性があります。
後者であるかどうかを確認するには、まずマザーボードのBIOSを最新バージョンにアップデートする必要があります。私も同じような問題を抱えていました…6本のTripple-Channel DDR3スティック(6x2Gb)のRAMは、それぞれを個別にテストした結果、すべて良好でした…しかし、私のマザーボードは、頻繁に1つまたは2つのRAMをカウントしないことをランダムに決めてしまい、8GbのRAMしか残っていませんでした。BIOSのアップデートで問題が解決され、今では12Gbのメモリすべてに確実にアクセスできるようになりました。