いつもお世話になっております。
プログラミングというよりオペレーティングシステムの仕様/実装の質問になり申し訳ありません。
Mac OSでのメモリ管理の仕組み/仕様/実装について知りたく、質問させて頂ければと思います。
[現象]
現在メモリ16GBのMacBookを使っています。
幾つかのアプリケーションを利用していると
パソコン自体の動作が緩慢になることがあります。
特に今回はChromeで大量のタブを開いていた為、
大量のプロセスを作成されており、それらがメモリを多く消費していました。
Chromeのタブを閉じることでメモリが解放され、
動作が元通りに安定しましたが、そこでMac OSのメモリ管理について少し気になったことがあります。
[疑問]
というのも動作が遅くなった際に、大体の場合メモリは90%を少し超えた位で
99%や100%にはなっていないのです。
つまり多少の空きがあると考えられます。
パソコンのメモリは16GBなので90%の使用率では1.6GBの空きがあると考えられます。
これだけあればもっとスムーズに動作が出来そうな気がするのですが、
実際は文字の入力にも4,5秒のラグが出たり、クリックの反応が遅くなったりします。
またChromeで大量のタブを閉じ、メモリの解放を行った後に、それを奪うように他のアプリがメモリを確保するということもありませんでした。
通常メモリが不足している際(メモリに空きが無い=使用率100%?)にアプリケーションから新たなメモリの使用要求があった際には
OSがそれに基づいて利用可能メモリの探索やメモリの圧縮を行い、
最終的に利用可能なリソースが見つからなかった場合にスワップアウトを実行し、
SSDやHDを仮想メモリとして利用され、物理メモリと仮想メモリのI/Oの速度差や
スワップイン/アウトの処理に伴う待ち時間の発生により、
処理が緩慢になるという事象が発生するという理解です。
ただ今回は使用率が100%になっておらず、メモリには空きがあったと考えられるので
上記のメモリ管理の仕組みと差がある為、それが何か知りたく質問させて頂きました。
(自分でもインターネットの記事を探してみたのですが、それを示す回答が見つからず。)
実行されているプロセスやリソース使用状況次第で色んな要因が考えられる上、Mac OSはOSSでは無いので
その詳細は仕様や動作は不明なところがあると思われますので、
今回の現象の真の原因が知りたいというよりも、
Mac OSのメモリ管理の仕組み上で想定出来る動作を知りたいと考えています。
(例:システム上の重要な動作を保証する為、メモリを完全に使い切り、使用率が100%になることはメモリリークなどが発生しない限りはないが
それ故に90%の時点で可処分メモリ枠が無くなっており、スワップイン/スワップアウトが頻発し動作が遅くなっている等)
何かアイデアをお持ちの方がいらっしゃいましたら、ご教示頂けますと幸いです。
(調べていた中ではWindows OSでもメモリ使用率が90%以上で動作が遅いという意見があったので、
Mac OSだけの動作では無いのかも知れません。)
[質問を受けての補足]
Mac OSのリソース状況を確認出来るActivity Monitorのメモリタブに表示される
メモリの逼迫状況をグラフィカルに表示するメモリプレッシャーについてですが、
発生時に確認し忘れていた為、その時点で何色を示していたか不明です。申し訳ありません。
回答3件
あなたの回答
tips
プレビュー