2010-12-14 73 views
2

我有一個Objective-C應用程序,它被設計爲使用WebKit視圖運行很長一段時間。經過一段時間後,應用程序會建立相當數量的內存,因此我希望根據請求準確地向最終用戶顯示內存使用情況。在OS X上的活動監視器中,我看到了我的應用程序Real Memory和Private Memory的兩個內存值。從我讀過的內容來看,私有就是這個過程的一切,真實是一個估計。我該信任什麼?有沒有一個特定的公式可以用來計算確切的用法,而不是OS X的報告?Real Memory VS.私有內存

不是我的專業領域。

回答

4

如果您擔心內存泄漏,則應該使用the various tools provided by Apple進行調試。

實際內存是進程正在使用的實際物理內存。

專用內存是由該進程使用的物理內存。

虛擬內存是進程的整個虛擬內存的大小,包括那些當前沒有駐留在物理RAM中的頁面。

如果你有泄漏,看看這些數字實際上很難說。例如,mableced然後泄漏的塊將不會再被引用,所以它最終會被換出。它將成爲虛擬內存的一部分,但不是常駐內存的一部分。所以如果你有泄漏,虛擬內存會隨着時間的推移逐漸增加。

另一方面,如果malloc無法找到未分配的內存塊進行分配,虛擬內存將會增加,但在釋放內存時它不會減少。所以如果你的malloc數量巨大,虛擬機會增加,但即使你正確釋放它,它也不會再次減少。如果你也有泄漏,malloc會耗盡回收的VM,這意味着你可能沒有注意到它。

因此,使用專門構建的泄漏檢測工具。