16Mのメモリを使用する1,000,000アイテムのリンクリストを作成しました。それから私はそれらの半分を削除して解放しました。メモリ使用量が減ると思いましたが、減りませんでした。
なんで?
Mac OSX10.8.2のActivityMonitorでメモリ使用量を確認しています。
私のコードをチェックしたい場合は、ここにあります。
一般的に言えば、free
OS にメモリを解放しません。まだプロセスに割り当てられているため、OS は割り当て済みとして報告します。プログラムの POV から、作成した新しい割り当てを満たすことができます。
他のすべてのノードを解放したため、メモリはほぼ確実に非常に断片化されていることに注意してください。この空きメモリは、その間に割り当てられたメモリを含む小さなチャンクであるため、小さな割り当てを満たすためにのみ使用できます。より大きな割り当てを行うと、プロセスはより多くのメモリを求めて OS に移動します。
プロセスは一度に 1 ページずつ OS からメモリを取得するため、そのような断片化されたメモリを OS に戻すことはできません。すべてのページの一部を使用しています。