非アクティブなメモリはリソースの浪費ではありませんか?


87

特にこのスクリーンショットの例に照らして、マシンのメモリ使用量の説明を探しています:

メモリ使用量

私は何であることを理解Freeし、Active手段
しかし、の意味何WiredとはInactive

特にinactive、なぜ私たちが使わない何かのためにそんなに多くのメモリを使うのですか?

回答:


142

非アクティブなメモリは、くだらない名前のために恐ろしいラップを取得しました。それはひどい名前であることを除けば、「同じタスクを2回目、3回目、4回目にMacを本当に速くする」というようなメモリと呼ばれるべきでした。

Appleは、いくつかの新機能を導入し、圧縮メモリを追加したときにアクティビティモニターを書き直したため、「非アクティブメモリ」を表示しないmacOSには適用されなくなりましたが、これに対して文書化されているMac OS Xメモリ管理にも適用されますアクティビティモニターのバージョン:https : //support.apple.com/en-us/HT201538

OS Xの仮想メモリの概念を初めて知った人に説明する方法は次のとおりです。

  • 有線:この量のRAMがないとシステムは実行できません(決して交換されません)
  • アクティブ:プログラムは、現在または過去数秒で実際にこのメモリを使用しています
  • 非アクティブ:プログラムが低速ディスクまたは他の場所から読み取ったもので、二度と必要ないというもの。エンジニアはよく知っています。数分でFacebookに戻るか、終了してからWordを再起動します。コンピューターでも同じことが何度も起こります。
  • 空き:完全に浪費されたRAM-システムは、短期の割り当て要求をカバーするために1 MBまたは2 MBの空きのみを必要とします。最大の割り当てについては、アクティブ/ワイヤードに割り当て、保持に使用されていた情報を削除することにより、非アクティブRAMの一部を使用します。

この問題は、Free + Inactiveが合計の約1/3未満である場合に発生し、その後実際に速度が低下する可能性があります。

非アクティブなメモリは、ボーナス速度/ダブルデューティRAMです。すぐに無料で機能しますが、システムが正しく推測し、何かをRAMに保持しておけば、繰り返しタスクを大幅に高速化します。既にRAMにロードされているため、スワップメモリ​​よりも高速であり、仮想メモリシステムが適切に推測すると処理を高速化します。

4つのカテゴリ(アクティブなスワップをカウントする場合は5つ)のそれぞれを見るのではなく、RAMに問題があるかどうか疑問に思ったら、W + Aを新しいプログラム/タスクの速度を落とすように、F + Iを高速化するように結合できます新しいプログラム/タスク。F + Iが多いほど、RAMがスワップに依存して割り当てられたメモリをジャグリングする前に、より多くの新しいプログラムを起動できます。

上記で述べたので、スワップがどのように機能するかを本当に知る必要はありません。基本的に、プログラムがアイドル状態で、数日(または数時間)使用されていない場合、システムはプログラムを強制終了するのではなく、そのRAMをハードドライブに書き込みます。これにより、システムはメモリ管理に関連するあらゆる種類をシャッフルして処理できるようになり、各プログラムがシステム間でメモリ使用量が少なくなるユーザーを同意するために対話する必要がなくなります。

非アクティブRAMがどのように使用されるかの実例は次のとおりです。

  1. すべてのアプリを終了し、テストする2つのアプリがログイン時に自動起動するように設定されていないことを確認します
  2. Macを再起動します
  3. アクティビティモニターを起動し、RAM全体を監視します
  4. アプリケーションAの起動にかかる時間(MS Wordが適切な選択です)
  5. Aを終了
  6. アプリケーションBを開始するのにかかる時間(Adobeでも良いでしょう)
  7. Bを終了
  8. Aの2回目の打ち上げにかかる時間
  9. Aを終了
  10. 時間Bの2回目の打ち上げ。
  11. Bが実行されている時間Aが3回目に開始されます。

システムがこれら2つのアプリを実行するために必要なものを非アクティブなRAMに保持することを学習するので、2回目/ 3回目の起動の劇的な高速化が見られるはずです。


あなたの場合-有線とアクティブの合計は、ディスクへのスワップが発生する可能性が高く、非アクティブなRAMが再利用する必要があるすべてのものを保存するのに十分な大きさではないため、Macの速度が遅くなることを意味します。高速なSSDドライブを使用している場合、このRAM割り当ては問題なく、RAMの1/2未満がF + Iになったら速度が低下し始めるのではなく、Fの合計RAMの1/4のようにカットできます。 +顕著な遅さを見る前に。これらのガイドラインは一般的なものであり、vm_stat 15継続的な中規模のボリュームスワッピングによってMacが遅くなることのないように、監視するか、同様の間隔が必要です。


9
私のような新人にとってはすごい完全な答えです。ありがとうございました、非常に感謝します:)
GusDeCooL

6
うん-私は皆のために答えを得る-一度だけ、人々はそれを編集してより良くすることができ、あなたはあなたの答えを得る。人々が来て面白い質問をすることができるウェブサイトのためのかなりクールなアイデア。:-)
bmike

3
うわー!美しい答え!
-duci9y

3
私のOSクラスでこのように説明してほしい。
スタイフ

2
@cvsguimaraesのパージは即時ではありません。 chat.stackexchange.com/transcript/message/12107920#12107920
グラハムペリン

6

ある数の最も重要な、あなたのMacが「強調」のメモリを取得しているかどうかを判断する際には、「ページアウト」の図です。Mavericksのアクティビティモニターでは、これは表示されなくなり、「使用済みのスワップ:」に情報が表示されるようになりました。

ページアウトとは、要求されたすべてのアプリケーションとプロセスを実行するのに十分なRAMがないとOSが判断したことを意味します。その後、メモリのディスク部分に「ページング」され、アクティブに使用されていないと判断されます。これは、RAMメモリ(高速)がHDDメモリ(低速)に変更されることを意味します。実行中のアプリケーションが多数あり、ユーザーがアプリケーション間を移動しているためにこれが頻繁に発生する場合、ページアウトとページインが多数発生します。

ページアウトが増えている場合は、アクションを起こす必要があります。


4

私のMacの問題は、コマンドウィンドウで手動でパージを行わない限り、「非アクティブな」メモリがパージされないように見えることです。ビルドアップし、アプリケーションを強制終了するよう指示するポップアップウィンドウが表示されるまでビルドアップします。すべてのアプリケーションを終了した後でも、非アクティブなメモリが多すぎて何も実行できません。そのため、最新バージョンのMountain Lionを実行しているMacでは、空きメモリが少なくなると非アクティブなメモリが回収されることはありません。解放されない非アクティブなメモリの塊をロックしたアプリがあるか、iOSにバグがあります。(私は8GBの物理メモリを持っています...それで十分でしょう!)


2
MacBook ProおよびMac Pro上のMac OS 10.6および10.7では、アーニーと一緒にいます。非アクティブなメモリが徐々に増え、OSがスワッピングを開始します(「ページイン」および「ページアウト」に従って)。システムは停止するまでクロールします。非アクティブなメモリは再利用されないようです。「パージ」を使用して非アクティブなメモリを再利用し、システムを再びアクティブにする必要があります。
エリック

2
このポップアップウィンドウはどこから来たのですか?vm_stat発生するまでに報告されるメモリの状況は何ですか?「何かを実行する」ために「多すぎる」非アクティブなメモリが存在する可能性があると確信する理由は何ですか?私の知る限り、これはすべて、あなたが知っているコードに裏打ちされていない、実際にカーネルで実行される伝聞です。
キューバOber

2
メモリの割り当ては、Gusが提示したようなものですか?ここでは、1ギガバイトの有線と1ギガバイトの半アクティブについて説明しています。この状況では、非アクティブ/無料の配給は私には問題ありません。おそらく、物事が崩壊している状況を詳しく説明する2番目の質問をするでしょうか?
bmike

2

すべてのポスターとコメントのおかげで、これは私にとって有益で有益なスレッドになりました。私の最近の経験は誰かに役立つかもしれません。Mac MiniをOS X10.8.1および16G RAMとともに使用して、他の場所で実行されるソフトウェアのプロトタイプを作成します。「数分でFacebookに戻ったり、終了後にWordを再起動したりしない」ことを保証できます。代わりに、Macbookでそれを行います。

私のタスクは大量のデータを処理することでしたが、I / Oは時間がかかります。そのため、1回の急増でできるだけ多くのデータをRAMに読み込み、そこで処理してからディスクに書き戻すという考え方です。 、完了まで処理を繰り返します。これには数時間かかります。私が見ることは、新しいデータのチャンクを読み込むたびに、非アクティブなメモリがジャンプすることです-システムAIは、古いチャンクを再び使用したいかもしれないと仮定すると思いますが、メモリが低下します。

このプロセスを数回繰り返した後、空きメモリはわずか数MBになり、非アクティブなメモリはさらに数MBを解放し、最終的に空きメモリと非アクティブなメモリを数分間前後させた後、非アクティブなメモリは解放されます数GBを一度に増やします。すべてが@bmikeの説明どおりであり、vm_stat 15とアクティビティモニターの両方で0ページアウトが表示されます。

多分完全にそうでないことを除いて。何回か物事が泳いで移動しているので、私はコーヒーや夕食を食べに行き、プロセスを監視していません。何が起こるべきではなく、プロセスは突然ページアウトのボートを投げ捨て、道を遅くします。問題を引き起こしているのはおそらく私のくだらないコードであると規定しますが、その変動の原因を排除するために非アクティブなメモリをオフにしたいのです。壊れていますか?私はそうは言いませんが、メモリ管理は私のユースケースに最適化されていないと思います。


0

最近アクティブになったアプリや終了したアプリで使用される非アクティブなメモリ。OS Xは、ユーザーがプログラムを再度開きたい場合に備えて、予約を保持します。その場合、OS Xはパフォーマンスを高速化するメモリを再配置する必要がありません。プログラムを再度開かない場合、しばらくすると、非アクティブなメモリが解放または再配置されます。(c)

この機能は、RAMが多い場合は便利ですが、そうでない場合は非常に面倒です。実際、それはすべてリンゴのものです。強力なガジェットまたはMacを使用しているときはすべてがクールですが、デバイスが古くなるとすべての機能が遅くなります。

したがって、特別なトリックを使用して管理する必要があります。

非アクティブなメモリには、purge解放するコマンドがあります。


-3

基本的に壊れています。空きRAMが少なくなると、非アクティブなRAMは自動的に「パージ」されます。ユーザーが再び開くことを期待して、以前に開いたアプリケーションのRAMを保持するポイントは何ですか?空きRAMが少ないという事実は、既存のACTIVEアプリケーションに十分なRAMがない可能性があり、現在スワップしていることを示しています。閉じたアプリケーション用にGBのRAMを保持するのは簡単ではありません。Apple自身の説明によると、Inactive RAMはFree RAMが少なくなったときに自動的にパージまたは借用する必要があります。これは明らかにそうではありません。


3
仮想メモリシステムは、大量の空きRAMを無駄にします。プログラムがメモリの割り当てを要求すると、カーネルはより多くの仮想メモリを構成し、キャンディのように渡します。プログラムがそのメモリを実際のデータで満たした場合にのみ、システムはその操作のためにRAMに空きを作る必要があります。その「空間を作る」ことは、空きメモリと非アクティブなメモリから引き出されます-非アクティブなメモリを解放するための遅延は計り知れないほど小さいです。あなたが記述するパージはまさに何が起こるかです-システムが遅延しているときにシステムがパージ作業を前もって行う必要があることを意味し、必要な場合にのみその作業を行います。
bmike

@bmikeしかし、空きRAMがなくなって新しいアプリを起動すると、非アクティブなRAM部分が減少し、アクティブなRAMが増加することを意味しませんか?これは明らかにそうではなく、私の経験から、非アクティブなRAMがギガバイトあるにもかかわらず、空きRAMがなくなるとシステムは非常に遅くなります。システムは、非アクティブなRAMの再利用を検討する前に、ディスクの交換を好むようです。
-codingFriend1

4
@ codingFriend1正確に見てみましょう- vm_stat「空きRAMはもうない」とみなすページはどれくらいありますか?Macが「遅い」とき、ページインとページアウトはvm_stat 1何のためにカウントされますか?問題のあるシステムでこれを見ているときはいつでもvm_stat 15、ターミナルウィンドウで実行する(またはファイルシステムにログする)のが好きなので、ページングアクティビティが何であるかを決定するときにページングアクティビティが何であるかを正確に知ることができますページャ。この例には100 MBの空きRAMがあるため、ページングの圧力がかかっていることはほとんどありません。
bmike

-4

本質的に非アクティブなメモリは、以前閉じていたプロセスをより速く開くようにします。Mac OSが大量のメモリを消費していることがわかった場合、SafariまたはChromeで開いた多数のタブのように、ターミナルで「パージ」コマンドを使用するだけで、本当に必要ありません。OS X Mavericksでは、代わりに「sudo purge」を使用します(パスワードを入力する必要があります)。再び何かを開く必要があるときは貴重な時間を削りますが、RAMを集中的に使用するゲームをプレイしたり、RAMを必要とするアプリケーションを開く場合は、パージコマンドを使用することをお勧めします。


2
これは他の回答とどう違うのですか?
user151019
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.