簡體   English   中英

OS X上長時間運行的進程使用的內存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM