カーネルはキャッシュにメモリを使用しますが、要求に応じてユーザーアプリケーションにメモリを使用できることを知っています。メモリが「欠けている」と主張するときは、出力で「利用可能な」メモリに言及し、free
これを考慮します。
起動したプロセスをすべて終了したら、使用可能なメモリにある程度戻る必要があるようです。しかし、それは本当ではないようです。
free -k
以下は、ミニマリストWMといくつかのシェルなどを使用してXにログインした直後の出力です。
再起動後:
total used free shared buff/cache available
Mem: 8144232 373664 6945832 1644 824736 7514692
available
サイズは7.5MiBで、すべてが正常です。
数週間コンピュータを使用した後、メモリが大幅に減少available
し、起動したすべてのアプリケーションをすべてシャットダウンしましたが、メモリはまだ起動時よりも低くなりました。見つけることができるすべてのアプリケーションを終了すると、最大約5GiBの「利用可能な」スペースを解放できます。
その後、ディスプレイマネージャを再起動して再度ログインすると、次のような結果が表示されます。
total used free shared buff/cache available
Mem: 8144344 577280 5547936 982600 2019128 6279136
Swap: 0 0 0
これにより、単にアプリを終了するよりも多くのメモリが確保されますが、すべてを再度開く必要があります。また、新しくリリースされた7.5GiBの近くにも到達しません。私は共有メモリ使用量がこれの大部分を占めることに気づきましたが、すべてのユーザープロセスを終了したので、なぜそれがそれほど高いのかわかりません。
この動作の原因が何であるか、コンピュータを再起動したり、Xを再起動する必要がない回避策があるかどうかを知りたいです。
答え1
free は「shared」に対して高い値を表示し、交換は無効になります。 / tmpがtmpfsとしてマウントされると、その中にあるすべてのファイルは実際に共有メモリに保存され、スワップなしでシステムはそのファイルをスワップして空きメモリを解放できません。
df
/ tmpでどのくらいのスペースが使用されているかを確認してください。これは、アプリケーションメモリと総システムメモリの違いを説明できます。