為什麼同一 APP ,在不同的 Android 手機上佔用內存相差很大?
01-04
同一app,在不同的android手機上,佔用內存相差很大
例如我開發的一款app,在小米手機上運行起來,佔用內存近200M,因此耗電也很快,然而在華為手機上佔用內存就不超過100M其實運行起來就那麼些東西,為什麼內存差的那麼大
@七月的天邀。
準確的說,同一款APP,在不同屏幕密度的android手機上,佔用內存會有差別。導致內存差異的主要原因是圖片,因為圖片是應用運行過程中占內存的大頭,但應用中圖片的內存佔用和以下因素有關:- 設備的解析度;
- 設備的屏幕密度;
- 程序中圖片的質量;
- 程序中圖片存放的位置;
- 關於Android中圖片大小、內存佔用與drawable文件夾關係的研究與分析
- Android drawable微技巧,你所不知道的drawable的那些細節
補充一下 @張明雲的答案。
不止是圖片,在不同機型上,各個APP的緩存策略也不同。
不說具體的APP了,就拿第三方圖片庫Fresco來說,由於Lollipop之後Fresco不再佔用ASM緩存圖片,改成依賴Java Heap之後,OOM頻發,所以github上有一些自定義的cache supplier,源碼里經常會看到這樣一段:
手機強答。首先需要問清楚,題主所說的佔用內存大小是如何統計的?如果是使用了procrank的pss,那麼這麼大的差異我很懷疑是否一個手機開啟了swap,而另一個沒有開導致的或者swap的大小不一樣?期待題主更新下adb shell procrank,以及adb shell dumpsys meminfo [pid]的對比結果。
樓上都說得對,我從另一個角度說下可能的原因:
app是從Zygote分裂出來的,由於很多廠商都會定製一大堆feature,工程師們為了加快app啟動速度,會在Zygote裡面預載入一堆常用的資源,這樣啟動app的時候就不用再載入了,但相對來說就會多佔用一些內存....解析度不同的手機如果app做了適配那麼圖片將是不同的,某些app可能個別功能模塊5.0以上和以下實現效果也不同,所以可能佔用內存差別很大
開啟的一些服務,死循環的服務很占內存的又耗電,這就需要代碼優化。安卓安源好處有優勢也是有弊端的
因為 APP 需要進行手機適配 1 圖片適配 大屏幕手機 圖片自然要做大2 緩存 手機配置等達不到要求 自然不會給你開全特效- -
推薦閱讀:
※如何評價樂視新機樂pro3?
※有綜合實力超過了 iPhone 的 Android 手機嗎?
※華為P10和小米6對比怎樣?
※對於即將發布的一加手機5(OnePlus 5),你有怎樣的期待?
※安卓手機到底應不應該關注內存佔用問題?