私は16GBのシステムRAMを持っています。タスクマネージャ以外のアプリケーションを何も開いていない状態での起動時に、Windowsは約3GBのRAMを使用しています。プロセスタブを見てみましたが、何も異常はないようです。WindowsがRAMを大量に使用している理由を調べるにはどうしたらいいのでしょうか?
すべてのユーザーからのすべてのプロセスを
プールモンから読むと、私のワイヤレスブロードコムドライバはRAMの約0.4GBを使用しているようです。削除しても起動時に2.6GBを使用しているようで、まだ多すぎます
メモリリークに関連したワイヤレスドライバを再インストールしたところ新たなスクリーンショットが出てきたので、本当にメモリリークだったのか確認してみたいと思います
78 Vader 2013-11-12
ドライバが原因でメモリリークが発生しています。パッケージ化されていないカーネルメモリの高い値を見てください。あなたの場合、これは3.7GBを超えています。poolmon を使用して、どのドライバが高い使用量を引き起こしているかを確認できます
Windows WDKをインストールし、poolmonを起動し、プールタイプの後にPでプールタイプをソートして、ページ化されていないものが上位に来るようにし、Bでバイト数をソートして、最もメモリを使用しているタグを表示します。プールモンを実行するには、WDKがインストールされているフォルダに移動して、Tools (またはC:\Program Files (x86)\Windows Kits\10Tools\x64)に移動して、poolmon.exeをクリックします
ここに示されているように、どのプールタグが最も多くのメモリを使用しているかを見てみましょう
さて、cmdプロンプトを開いて、findstrコマンドを実行してください。これを実行するには、cmdプロンプトを開いて、”cd C:C:\WindowsSystem32\drivers “と入力します。そして、”findstr /s __ .これで、どのドライバがこのタグを使っているかがわかります
ドライバのフォルダ(C:\Windows\System32\drivers)に移動して、問題のドライバ(上の画像例ではintmsd.sys)を右クリックします。プロパティ]をクリックし、[詳細]タブで[製品名]を見つけます。その製品のアップデートを探します
pooltagがWindowsドライバのみを表示しているか、pooltag.txtに記載されている場合("C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt"
)
を使用している場合は、xperf を使用して何が原因で使用されているかを追跡していますWindows SDKからWPTをインストールして、cmd.exeを管理者として開いて、これを実行してください
xperf -on PROC_THREAD+LOADER+POOL -stackwalk PoolAlloc+PoolFree+PoolAllocSession+PoolFreeSession -BufferSize 2048 -MaxFile 1024 -FileMode Circular & timeout -1 & & xperf -d C:pool.etl
は30〜60秒の成長をキャプチャします。WPA.exeでETLを開き、分析ペインにPoolグラフを追加します
pooltagの列を最初に置いて、スタックの列を追加します。これでWPA.exe内にシンボルを読み込み、poolmonで見たタグのスタックを展開します
スタックで見ることができる他のサードパーティ製ドライバを見つけてください。ここでは Thre
タグ (スレッド) が G-Data の AVKCl.exe によって使用されています。これを修正するためのドライバ/プログラムの更新を探してください
88 magicandre1981 2013-11-12
さて、私がより詳細な回答に入る前に、まず最初に。最初のスクリーンショットでは、Non-Paged Pool(カーネルメモリ使用量の一種)が1.3GBになっています。これは私には異常に高いように思えます、特に起動後30分しか経っていないのに。長時間使用したり、ふるいのように漏れているプログラムを使用したりすると、NP プールがこれだけ高くなるのがわかると思います。対照的に、私のNPプールは通常100から200メガバイトの間で、ページ化されたプールは400から500にもなるかもしれません(これは何週間も再起動せずにシステムを稼働させた後の話です)
タスクマネージャでカラムヘッダを右クリックし、カラムの選択を選択することで、いくつかの追加カラムを有効にすることができます。Working Set (private)
, Working Set (shared)
, Commit
, および NP Pool
を追加する必要があります。私なら、すべてのユーザーのすべてのプロセスをスキャンして、それらのプロセスの中に約256KB以上のNPプールがあるかどうかを確認します。もし、特にかなり高いものがあれば、それが問題の原因か、少なくともその一部であるかもしれません
プロセスが使用している物理メモリの量である総作業セットは、プライベートと共有作業セット(WS)の組み合わせです。通常、ほとんどのプロセスではプライベートの方が大きくなりますが、一部のプロセスでは共有WSをより多く使用している場合があります。通常はこの2つを合計してWSの合計とします。コミットは、バッキングストア(ほとんどの場合、Windowsのページファイル)にコミットされた作業セットの量です。バックグラウンドにあるアプリケーションのコミット量は WS よりも多いことが多く、ページングプールの多くがメモリからページングファイルにスワップされていることを示しています (これは、最小化されてしばらく使用されていないデスクトップアプリケーションではごく普通のことです)
Non-Paged Pool は、物理メモリからスワップアウトすることができないメモリであり、決してスワップアウトされることはありません。NP プールメモリには、プログラムコードや、正しく動作するために物理メモリ内になければならない重要なセクション、特殊なヒープなどが含まれていることがよくあります。60プロセスのうち、すべてのプロセスが256KBのNPプールメモリを持っている場合、あなたの絶対的な最小物理メモリ使用量は約15,360KBになります。ほとんどの場合、1つまたは2つのアプリが256KBのNPプールを持っているかもしれませんが、ほとんどのアプリはそれ以下で、多くの場合はかなり少ない(または全く持っていない)ことが多いです。システムがすべてのプロセスのワーキングセットをページアウトする可能性は非常に低いので、メモリ使用量がそこまで低くなることはないと考えてください
最後に、より多くのメモリを持つことのポイントは、物理ディスク上の拡張メモリ空間(スワップ、ページファイル)との間でデータをページングする必要性を回避することです。ページングとは、割り当てられた物理メモリのブロックを移動させ、いくつかのブロックをディスクに押し込み、他のブロックをディスクから物理メモリに持ち込むことを含むプロセスです。ページングは、簡単に言えば、非常に望ましくないものです。それ自体は「悪い」ことではありませんが、あまりにも頻繁に発生すると、パフォーマンスの足を引っ張ることになります。システムの総物理 RAM を増やす究極のポイントは、より多くのプロセスがより多くのコミットを物理メモリに保持できるようにすることです(作業セットをより大きくする)。メモリを消費することは問題ではなく、より多くの実行プロセスがより多くのメモリを使用すると、メモリアクセスに関連した物理ディスク活動(特にページフォルト)が低くなるため、システム全体のパフォーマンスとアクティブプロセスのパフォーマンスが通常より高くなります
Windows は、あなたのためにメモリを管理し、自動的にページ (スワップ) ファイルとメモリの間でデータをページします。9GB のメモリを必要とするプロセスを実行していて、システムがすでに 4GB (12GB のうち) を使用している場合、システムは自動的にどのプロセスがその作業セット全体への即時アクセスを必要としないかを判断し、余分な 1GB を解放するために、ページ化されたプールの一部またはすべてをスワップにページ化します。大規模プロセスが最終的により多くのメモリを必要とする場合、windows は、新たに要求されたブロックを割り当てるのに十分な空き領域があるまで、他のプロセスの作業セットをさらに減らします。大規模プロセスは、最終的には NP プール以外の利用可能なすべてのメモリを消費し、Windows が作業セットをより多く解放することを許さないプロセスを定期的に実行するための追加の最小限のオーバーヘッドを持つ可能性があります (すなわち、それらのプロセスには保留中のページフォルトがあり、Windows が物理メモリからスワップアウトしてしまうが、それらは要求されているので移動できない)
プロセスがアクセス可能なメモリよりも多くのメモリを必要とする場合 (32 ビットのプロセスは通常 2Gb にアクセスでき、強化された技術では 4Gb 未満のものもありますが、64 ビットのプロセスは通常それぞれ 48Gb のメモリにアクセスできます)、windows はスワップスペースを使用してメモリを仮想化しようとすることがあります。32 ビットのアプリが最大で許可されている 2Gb のスペースを使いたいが、1.2Gb しか利用できない場合、windows はページファイルに 2Gb を完全に確保し、アプリのメモリ使用量をサポートするために、必要に応じてプロセス自身のデータをページファイル内で移動したり、ページファイルの外で移動したりします。この場合の総「メモリ」使用量は、トータル コミット数で計算すると、利用可能な物理メモリよりも大きく見えるかもしれません。通常、トータル コミットは、システムによって管理されている場合、通常は物理メモリ量の2~3倍の総ページファイルサイズで最大になります。あなたの場合、トータルコミットは約 24GB、つまり 12GB の物理メモリの 2 倍になります (これは最初のスクリーンショットで示されていますが、ここでは以下のように記述されています)。これは最初のスクリーンショットで「コミット (GB) 3 / 23」と表示されています。)
最後のポイントを一つ。あなたは回答の中で16GBのRAMを持っていると言いましたが、タスクマネージャは12GBのRAMしか見ていません。ここでは2つのことが考えられます。あなたのシステムが本当に12GbのRAMしか持っていないか、あるいは、1つのスティックが正しく登録されていないかのどちらかです。もしラムのスティック(私は4Gbのスティックを4本と仮定しています)がある場合は、それが不良であるか、マザーボードに完全に正しく取り付けられていないか、またはマザーボードがメモリ検出の問題を抱えている可能性があります
後者であるかどうかを確認するには、まずマザーボードのBIOSを最新版にアップデートする必要があります。私も同じような問題を抱えていました…私の6本のTripple-Channel DDR3スティック(6x2Gb)のRAMは、それぞれを個別にテストした結果、すべて良好でした…しかし、マザーボードはランダムに、頻繁にそれらのうちの1つまたは2つをカウントしないことを決定し、私には8GbのRAMしか残らないことがしばしばありました。BIOSのアップデートで問題が解決され、今では12Gbのメモリすべてに確実にアクセスできるようになりました
16 jrista 2013-11-12
WindowsのRAM使用量が多い理由を調べるにはどうすればいいのでしょうか?
RAMを多用しているのは、そのために設計されているからです。RAMを使うことに関連したコストは全くありません。実際、使用済みのRAMはフリーのRAMよりも優れています。フリーのRAMを使用するには、それを使用させる必要がありますが、それには努力が必要です
もしあなたが「後で使うために今のRAMを無料にしたい」と考えているのなら、それは忘れてください。RAMは、後で使うために今フリーである必要はありません。今使ってもいいし、後で使ってもいいのです。ここではトレードオフはありません — RAMを使用することによるデメリットは全くありません
RAMは使用されたままで、ある用途から別の用途へと直接切り替わるため、空き容量を確保するための努力をしなくても、再び使用することができます。最近のオペレーティングシステムは、他に選択の余地がない場合にのみRAMを空き領域にしています
11 David Schwartz 2013-11-12
上記に挙げられていない理由としては、Hyper-Vがあります
優秀なユーティリティRamMapで特定することができました
スクリーンショットはafterのものです。Driver Locked」の前はメモリが6GBを超えていて、この特定のマシンのRAMの80%以上を占めていました。Hyper-Vマネージャーに入り、「ダイナミックメモリ」を無効にしなければなりませんでした。不思議なことに、この機能を再度有効にしても、「Driver Locked」メモリは低いままでした
3 Dagelf 2017-01-14