標籤:進程安全 運行 == 順序 ice src tle 移動 相同
Android記憶體管理: 理解App的PSS
原文連結:http://www.littleeye.co/blog/2013/06/11/android-memory-management-understanding-app-pss/
當在應用程式上運行Little Eye時,在記憶體視圖中,會報告有關應用程式記憶體的3個重要統計資訊。 Dalvik記憶體使用量情況,即Java堆消耗的記憶體量,Native記憶體,即JVM外部進程使用的記憶體量。
然後是第三個統計量,被稱為“PSS”。 什麼是PSS?
Propotionate Set Size(比例集大小)
“比例集大小”是Android系統計算的統計資訊,以確定是否要殺死您的進程。 只看你的應用程式消耗多少記憶體,是不正確的方式,因為你的應用程式可能與其他進程使用一些共用記憶體,責怪你的應用程式正在使用任何共用記憶體是“不公平”的。 Android系統可能會殺死使用太多記憶體的應用程式(尤其是如果應用程式在後台),因此Android系統需要找到一種方法來可靠地計算應用程式負責的記憶體量。
什麼是共用記憶體?
Android是一個基於Linux的系統,Linux使用“共用”頁面來跨進程共用相同的記憶體。 共用記憶體的一個常見用途是在進程之間共用“代碼”記憶體頁(載入唯讀可執行代碼的記憶體地區)。 外部庫和JVM的可執行代碼是可以跨進程安全共用的記憶體地區的樣本。 還可以是資料頁,其是“寫時複製”,其可以在進程之間臨時共用,直到一個進程修改共用儲存空間。
技術應用“真實”記憶體使用量
因此,為了“公平”技術應用使用的記憶體,Android使用了PSS統計量。基本上,它是您的應用程式消耗的非共用記憶體和可以“歸因於您的應用程式”的共用記憶體部分(與其他進程共用的記憶體)/(分享共用記憶體的進程數量)的和。
現在,Android有一個“更公平”的方式來計算誰消耗了大量的記憶體,Android將按照PSS由大到小的順序開始殺死進程。
作為一個開發人員意味著什麼?
如果你的應用程式得到非常高的PSS分數,你的應用程式可能會被Android系統殺死。 也許這是你可以處理的東西,但是在後台被意外殺死可能會對你的應用程式造成影響,特別是如果你依靠一些後台Activity或Service來進行工作。 確保您的應用程式的PSS不是太高,特別是當您的應用程式進入後台。 進入後台後,釋放不在吸引的記憶體和對象,並斷開任何不再需要的共用記憶體,你不再需要,可能是一個好主意。 這將減少你的意外被Android系統殺死的機會。
要記住的一點是,PSS沒有“硬限制” - 不能保證你的應用程式超過某個閾值將被殺死,或者保證低於某個閾值可以生存。 應用程式不在前台時,必須做好任何時間被殺死的準備。如果PSS值較低,它有助於減少那些機會。
移動端測試===Android記憶體管理: 理解App的PSS