[英]Memory used by a long running process on OS X
我想確保長時間運行的數字運算算法不會占用過多的內存。 該算法用C ++編寫,可在OS X上運行。大大簡化的版本是:
int main() {
while (someCondition) {
// notice nothing is allocated on the heap
vector<int> v(10, 0);
}
}
我已經使用工具(分配和泄漏)分析了代碼。 我沒有發現任何泄漏。 而且,盡管“活動字節”計數看起來不錯(徘徊在20 MB左右),但“總字節數”計數仍在增長。 我所關心的是,當“總計數”達到約80 GB時,我收到有關缺少硬盤空間(我有120 GB固態磁盤)的OS X警告。 我對OS /進程交互了解不多,所以我想問一下:
在第一個進程被殺死或不再運行之前,基於UNIX的OS上長時間運行的進程所使用的內存是否可用於其他進程?
編輯:好像我在解釋儀表: Instruments ObjectAlloc:實時字節和總字節的“總字節”數有誤。 當我在活動監視器中檢出該過程時,“實際內存”本質上是恆定的。
您收到磁盤空間警告的原因可能與虛擬內存分配有關。 每次您的進程(或操作系統)請求內存時,通常通常首先在后備存儲區“分配”-swap。
虛擬內存總量是可用交換空間加上RAM的大小。 我沒有訪問OSX的權限,我知道它是按照自己的規則運行的,但是必須有一個顯示交換使用情況的命令
swap -l (Solaris)
swap -s (Solaris)
free (linux)
我想出的唯一命令是vm_stat
,再加top
vm_stat
看來top可能是我所談論的最接近的命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.