PowerShellでメモリ使用量が多いプロセス上位5件を取得する方法

コンピュータ

PCが重いと感じたとき、まず確認したいのが「どのプロセスがメモリを消費しているか」です。
タスクマネージャでも確認できますが、PowerShellを使うとコマンド一発で一覧を取得できます。

コマンド

以下のコマンドで、メモリ使用量の多いプロセス上位5件を取得できます。

Get-Process |
Sort-Object WorkingSet -Descending |
Select-Object -First 5 Name, Id, @{Name="Memory(MB)";Expression={[math]::Round($_.WorkingSet / 1MB, 2)}}

実行結果の例

Name                  Id Memory(MB)
----                  -- ----------
chrome              6672     666.79
Memory Compression  2456     450.78
Kindle             13964     371.02
explorer            7584     285.57
chrome             10164     250.43

この結果から、現在メモリを多く消費しているプロセスの傾向を読み取ることができます。

chrome(Google Chrome)

複数の chrome プロセスが上位に表示されています。
これは異常ではなく、Chromeの仕様です。

Chromeはタブや拡張機能ごとにプロセスを分離する「マルチプロセス構造」を採用しています。
そのため、タブを多く開いている場合や、重いWebアプリを利用している場合はメモリ使用量が増加します。

対策:

不要なタブを閉じる
拡張機能を整理する

Memory Compression

Memory Compression はWindowsの機能で、
使われていないメモリを圧縮して効率的に利用するための仕組みです。

一見するとメモリを大量に使っているように見えますが、実際には

「メモリ不足を緩和するために働いている」

状態です。

そのため、この値が高い場合は

「メモリに余裕がない状態」

である可能性が高いです。

ただ、今回の場合実際のメモリの使用量は

6GB/16GB

と半分以下ですので、予防的圧縮が行われている模様。

Kindle

Kindle はAmazonの電子書籍アプリです。
画像やフォントデータを多く扱うため、比較的メモリを使用しやすいアプリです。

特に:

高解像度の書籍
ページを多く開いている状態

ではメモリ使用量が増加します。

explorer(エクスプローラー)

explorer はWindowsのファイル管理(エクスプローラー)を担当するプロセスです。

通常はそれほどメモリを使いませんが、

大量の画像フォルダを開いている
サムネイル表示が有効
ネットワークドライブを参照している

といった場合にメモリ使用量が増えることがあります。

全体の見方

今回の結果から分かること:

ブラウザ(Chrome)がメモリ使用量の大部分を占めている
メモリ圧縮が動いているため、ややメモリ不足気味
アプリ(Kindle)も一定量のメモリを使用している

結論としては

「ブラウザ中心にメモリが消費されている一般的な状態」

といえます。

ワンポイント

Memory Compression が上位に来ている場合は、

メモリ増設
常駐アプリの見直し

を検討するタイミングの目安になります。

ワンライナー

エイリアスを使った短縮版

ps | sort WS -desc | select -first 5 Name,Id,@{n="MB";e={[math]::Round($_.WS/1MB,1)}}

コメント