Mac OS X:「アクティブ」メモリを使用しているのは何ですか?


7

8 GBのRAMを搭載した最新のMacBook Proを使用していますが、職場で数時間使用した後、「アクティブな」メモリの量が増え続けていることに気付きました。

Macを再起動するたびに、すべてが正常に見え、RAMをほとんど使用していません。しかし、数時間後には次のようになります。

スクリーンショット

ご覧のとおり、この場合は約4.3 GBです。

開発者である私は、「アクティブなメモリ」が実行中のプロセスによって現在使用されているメモリの量であることを知っています。そのため、私が最初にしたことは、すべてのアプリケーションを終了し、Mac OS Xに属さないと思われるすべてのプロセスを強制終了することでした。

私がそれをした後、私のアクティブなメモリは約400 MBになりましたが、スクリーンショットで見るもので行き詰まりました。終了するプロセスやアプリケーションはもうありません。

今、私は実際に何をメモリに保持しているのだろうと思っていますか?topアクティビティモニターは、メモリ使用量の多いプロセスを報告しません。

何か案は?

ありがとう!


更新1:

Doug Harrisの回答のおかげで、このスクリーンショットを作成しました。システム全体で2.55 GBのアクティブなメモリ使用量が表示されますが、psコマンドが計算するのは1.55 GBのメモリ使用量のみです。

ここに画像の説明を入力してください

2.55 GBの残りの部分がどこにあるのか、どこに割り当てられているのかはわかりません。Instrumentsをインストールしましたが、これは数時間にわたって行われるため、Instrumentsを使用するのは困難です。これは、OSのどこかのメモリリークのように感じられます。ドライバーかもしれません(ただし、カーネル拡張機能はインストールされていません-で確認しますkextstat)。

個人的には、メモリ管理ステータスについて「もっと」見ることができると面白いと思います。Linuxでは、「/ proc」の下にいくつかの情報があります。


機器を使用してメモリリークを検出し、完全なモニタリングを記録できます。なぜそれを正確に使用するのが難しいのですか?
マティアスクル

リークは数時間で発生するためです。メモリがなくなっただけなので、どのプロセスを監視するのかさえわかりません。Instrumentsを使用してリークを検出すると、大量のCPUとメモリが使用されて記録が行われますが、これは長期間の監視には適していません。
バスティベン

回答:


4

単一のプロセスが高いメモリ使用量を持っているわけではありませんが、実行中のプロセスはまだたくさんあります。

psおよびその他のコマンドラインツールを使用して、これをさらに掘り下げることができます。

最初に、オプションを使用しpsて、表示されるものを常駐メモリとコマンド名のみに制限します。-m出力をメモリ使用量でソートし、-aすべてのユーザーのプロセスを-x表示し、端末に関連付けられていないプロセス(つまり、ほとんどのMacアプリ)を表示します。

$ ps -axm -o "rss,comm" 

私が見る最初の数行は次のとおりです。

   RSS COMM
210256 /Applications/Firefox.app/Contents/MacOS/firefox-bin
158276 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
155360 /Applications/iTunes.app/Contents/MacOS/iTunes

これらが最上位にあることは私にとってショックではありません(そして、示されているChromeプロセスはほんの一例です)。RSS列は1024バイトブロックとして表されます。そのため、iTunesは約151.7 MBを使用しています。

その出力は十分にフォーマットされているので、物事をそのように分析するのが好きな場合、分析のためにスプレッドシートにそれを投げることができます。私はもう少しコマンドラインに固執します

すべてのプロセスの合計を確認するには、さらに多くの文字列をつなぎ合わせます。

$ ps -axm -o "rss,comm" | awk 'BEGIN { s=0;}; {s=s+$1;}; END { printf("%.2f GB\n", (s/1024.0/1024));}'

そのために表示される出力は2.44 GB、アクティビティモニターのアクティブメモリの表示とまったく同じではありませんが、psを使用してこの最下部に到達できるほど十分に近い出力です。

100MB以上を使用して、これらのプロセスのみを追加できます。

$ ps -axm -o "rss,comm" | awk 'BEGIN { c=0;s=0;}; ($1 > 100000) {c=c+1;s=s+$1;}; END { printf("%.2f GB from %d processes\n", (s/1024.0/1024),c);}'

0.98 GB from 8 processes

Macのメモリをが使用しているのかを正確に説明していませんが、これらのツールは発見に役立ちます。


ワオ。このガイドをありがとう。私は今までにMacを再起動しましたが、しばらくしてメモリがいっぱいになるので、これを試すことができます。それまでの間、賛成票をお持ちください!
バスティベン

-a自分以外のユーザーが所有するプロセスを表示するオプションを含めるように編集されました。
ダグ・ハリス

元の投稿を更新して、これまでに発見したことを反映させました。
バスティベン

1

man -k DTrace。これらのツールはこれを解決するものです。幸運を


0

システムプロセスの1つがメモリをリークしているようです(何らかの理由で実行されているシステムプロセスの数が増えているか、どちらかが増加しています)。これは、アクティビティモニターでツールバーのポップアップメニューを[マイプロセス]から[すべてのプロセス]に切り替え、[リアルメモリ]列で並べ替えることで直接確認できます。多くの実メモリを使用しているプロセス、および/または同じプロセス名の多くのインスタンスを探します。これは問題を解決しませんが、少なくともそれがどこから来たのかを知る必要があります。


私はそれを前にやってみましたが、私の主な問題は、それほど多くのメモリを消費するプロセスがないということです。
バスティベン

その場合、Doug Harrisのアプローチにより、より詳細な分析を行うことができます(スプレッドシートなど)。システムが最近再起動されたときの統計情報(ps出力の記録、アクティビティモニターのスクリーンショットなど)の何らかの記録を作成することをお勧めします。大量のメモリを使用します。実行中にプロセスリストでどのような変更が行われているのかを見つけると、問題を指摘できるはずです。
ゴードンデイヴィソン

0

私にとっては、アクティブなメモリは再利用のために解放されたメモリであるように見えますが、特に「空き」としてマークされていません


3
その「私には思える」のソース?参考文献に裏付けられた正確な回答が好きです。
フォンブランド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.