私はmmapを使ってシステムより多くをメモリに保存するgolang用のキャッシュパッケージを構築しようとしています。キャッシュは永続的である必要はありません。アプリケーションが実行されるたびにRedisからキャッシュをロードします。
しかし、プログラムが物理メモリの最大制限を超えるとどうなりますか?次の割り当てはディスクから発生しますか?カーネルが mamp からメモリを回収した場合、内容はどうなりますか?消えた?これを防ぐには、ディスクにmmapする必要がありますか?それともカーネルはこれを自動的に実行しますか?
ベストアンサー1
物理メモリが使い果たされると、システムは最近アクセスしたメモリページの一部をスワップパーティションに移動し始めます。通常、これらのページを選択するのはカーネルに依存します。あなたのページではないかもしれませんが、しばらく使用されていない他のプロセスに属するかもしれません。
介入したい場合は、次のものを使用できます。クレイジーウェス(2)システムコールは、それに応じて調整できるように、メモリ使用戦略に関する推奨事項をカーネルに提供します。