2014-03-13 125 views
0

Android內存管理與Linux內存管理有什麼區別? 我https://developer.android.com/tools/debugging/debugging-memory.html#ViewingAllocationsAndroid內存管理與Linux內存管理有什麼區別?

閱讀

Android does not use swap 

如何理解?

+0

Android在Linux內核上運行。許多Linux系統(例如嵌入在消費者路由器或盒子中的系統)都不使用交換。 –

+0

@BasileStarynkevitch交換是可選的嗎? –

+0

當然交換是可選的....你的消費者路由器(運行[WRT](http://en.wikipedia.org/wiki/DD-WRT)...)沒有交換空間。 –

回答

2

這就是說Android不會將頁面轉儲到永久存儲。

如果內存不足,作爲內核您有幾個選項,通過殺死進程來釋放內存,或將進程映像(或其中的部分)轉儲到永久存儲。這些部分稱爲頁面,用於轉儲頁面的持久性存儲區域在Linux,交換空間或Windows上稱爲頁面文件。

Android採取了一種有趣的方法。您不必序列化整個過程映像,而只需序列化應用程序的關鍵部分。通常,系統序列化的應用程序的部分是狀態信息和導航信息。如果系統同意分解您的狀態信息,那麼它可以重新創建您的視圖並將其狀態重置爲當您的進程被殺死以回收內存時的狀態。這是一個相當不錯的折中方案,因爲它強化了良好的應用程序設計並防止了顛簸。

+0

這是爲了節省存儲空間嗎? –

+0

不,這樣做會增加可用內存。但它是以性能成本爲代價的。而對於過去5年的移動設備來說,存儲速度太慢,以至於無法成爲一種選擇。如果你經常發生顛簸,它會導致用戶體驗不佳。記得15年前的窗戶? – dcow