長時間実行される数値処理アルゴリズムがメモリを使いすぎないようにしたいと考えています。アルゴリズムは C++ で記述され、OS X で実行されます。大幅に簡略化されたバージョンは次のとおりです。
int main() {
while (someCondition) {
// notice nothing is allocated on the heap
vector<int> v(10, 0);
}
}
Instruments (割り当てとリーク) を使用してコードをプロファイリングしました。漏れは見当たりません。また、「ライブ バイト」の数は問題ないように見えますが (20 MB 前後で推移)、「全体のバイト」の数は増加し続けています。気になったのは、「全体のカウント」が約 80 GB に達したときに、ハードディスクの空き容量が不足しているという OS X の警告を受け取ったことです (120 GB のソリッド ステート ディスクを使用しています)。私はOSとプロセスの相互作用についてあまり知らないので、私は尋ねたいと思いました:
UNIX ベースの OS で長時間実行されているプロセスによって使用されるメモリは、最初のプロセスが強制終了されるか実行されなくなる前に、他のプロセスで使用できますか?
編集: Instruments: Instruments ObjectAlloc: Explanation of Live Bytes & Overall Bytesの「全体のバイト」数を誤解しているようです。アクティビティモニターでプロセスをチェックアウトすると、「実メモリ」は基本的に一定です。