2011-03-03 318 views
34

我在大學時輟學了CS計劃......那麼,對一個對計算機科學有充分理解的人,請告訴我:與虛擬內存有關的髒和居民的含義是什麼?而且,對於獎勵積分,無論如何是虛擬內存?我使用Instruments中的Allocations/VM Tracker工具來分析iOS應用程序。關於虛擬內存,「Dirty」和「Resident」是什麼意思?

* 提示 - 嘗試解釋好像你正在跟一個8歲的小孩或一個完整的小孩子說話。 謝謝你們。

+5

+1對於健康的態度!這是如何獲得有用的答案,thanx :) – JOM 2011-11-08 08:12:48

回答

43

「髒內存」是已被改變的內存 - 這是垃圾回收器必須查看的內存,然後決定如何處理它。根據您構建數據結構的方式,您可能會導致垃圾收集器將很多內存標記爲髒,每個垃圾收集週期都需要比所需時間更長的時間。保持這個數字低意味着你的程序運行得更快,並且不太可能經歷明顯的垃圾收集暫停。對於大多數人來說,這不是一個真正的問題。

「駐留內存」是當前加載到RAM中的內存 - 實際正在使用的內存。雖然您的應用程序可能需要在內存中跟蹤很多不同的項目,但它可能只需要在任何時間點訪問一個小子集。將此數字保持在較低的水平意味着您的應用程序具有較低的加載時間,可與其他應用程序良好地協作,並降低您在應用程序運行時耗盡內存和崩潰的風險。這大概是你應該關注的數字。

「虛擬內存」是應用程序在任何時間點跟蹤的數據總量。此數字與正在使用的數據不同(正在使用的是標記爲「駐留內存」) - 系統會將數據跟蹤到,但您的應用程序未將其用於實際內存以外的其他位置。例如,它可能會保存到磁盤。

+5

雖然這是正確的Mac OS X,沒有虛擬內存或交換到iOS上的磁盤。 – 2011-03-29 13:15:39

+2

開發人員被間接鼓勵工作,就好像兩個不在那裏一樣。然而,它們在那裏,它們只是沒有被全面地展示出來,而且目前還沒有被開發者/應用程序直接提供(也就是說,並不是沒有破壞你的iphone)。 – blueberryfields 2011-03-29 16:04:25

+1

不管操作系統如何,都不會通知應用程序交換活動。從開發人員的角度來看,Mac OS X和iOS的不同之處在於,我們可以在OS X上略顯sl knowing,知道:a)系統內存更多; b)如果分配太多,則可以在系統陷入真正的麻煩。這在iOS上並不正確,如果您超額分配,系統會終止您的應用程序。至於如果「虛擬內存」和「交換」在技術上在iOS上是可行的,我並不懷疑它是什麼,但是如果iOS交換任何東西,我會感到驚訝。 – 2011-03-29 20:21:46

2

WWDC 2013 - 410 Fixing Memory Issues很好地解釋了這一點。值得一看,因爲它也解釋了髒,常駐和虛擬內存的一些實際含義。

+1

我想你可能意思是[WWDC 2013](http://asciiwwdc.com/2013/sessions/410)... – pxpgraphics 2015-01-03 23:29:50

+0

@pxpgraphics - 是的你是對的,我也修復了這個鏈接。 – Robert 2015-01-04 02:31:01