優(yōu)愛騰三大視頻APP技術對比--內存占用

周末閑來無事,翻遍各大視頻網站實在是找不到什么好看節(jié)目。既然從娛樂的角度來說視頻不好看,那我們就來從技術的角度來看下各家視頻APP吧。技術的角度,話題還是太大,實在是沒有能力做一個全面的比較。記得曾經有位小伙伴曾說過,一切性能問題追究到底都會成為內存問題。那我們就從內存的角度來簡單分析下優(yōu)酷、愛奇藝和騰訊視頻三家視頻APP。


優(yōu)愛騰

一、基礎知識 - dumpsys命令

對于Debug版本APP我們可以使用Android Studio自帶的Profiler來查看應用對內存的使用情況。想要查看Release版本應用的內存使用情況就得靠dumpsys這個工具了dumpsys運行在Android設備上,我們可以通過adb命令來運行它。通過dumpsys我們可以獲取到所有正在運行的系統(tǒng)服務的特征信息。系統(tǒng)服務非常多,我們可以通過如下命令查看能夠使用dumpsys來查看服務特征信息的服務列表。

adb shell dumpsys -l

dumpsys -l

上圖是我在華為P9上測試dumpsys -l的截圖,服務列表很長,只截取了一部分,截圖中看著眼熟的服務就activity這個服務了,這個通常用來查看四大組件的信息,如常見的adb shell dumpsys activity activities。常用還有如下服務。

服務名 作用
input 獲取系統(tǒng)輸入設備的信息,如鍵盤、觸摸屏等
batterystats 獲取電量使用信息
gfxinfo 獲取UI渲染信息
meminfo 獲取內存使用信息
cpuinfo 獲取CPU使用信息
netstats 獲取網絡使用信息
1.1 dumpsys命令語法

dumpsys命令的語法也非常簡單,直接adb shell dumpsys即可。但這樣獲取的是所有服務的信息,信息非常多,想要過濾到我們所關注的信息,還需要在命令后跟上我們所關注的服務名。如今天我們主要關注內存,對應的服務名是meminfo,那么命令就是adb shell dumpsys meminfo。這個命令獲取的是設備上所有進程的內存使用情況,我們今天關注的是優(yōu)愛騰三個APP的內存,所以我們還得再命令后加上進程名來過濾adb shell dumpsys meminfo com.youku.phone

優(yōu)酷首頁內存

1.2 dumpsys輸出信息解析

如上所示內存信息,一般關注Pss TotalPrivate Dirty這兩列。這是兩種不同的內存統(tǒng)計方式。

Private (Clean and Dirty) RAM
私有內存,這種方式只統(tǒng)計了當前進程獨享的內存,Private CleanPrivate Dirty的總和就是當前進程的獨占內存,當進程銷毀時系統(tǒng)會回收這部分內存。Dirty RAM是必須保存在內存中數據,如程序運行過程中的變量數據,這部分內存中的東西未成為垃圾數據之前必須一直保存在內存中;Clean RAM是從持久化文件中加載的數據,如程序執(zhí)行時加載的代碼,這部分內存中的數據可以丟掉,再次使用時可以再從持久化文件中再次加載。

Proportional Set Size (PSS)
比例集大小,這中方式統(tǒng)計的內存除了進程獨享內存外,還包括通過共享頁面與其他進程共享的內存。共享內存的一個常見用途是在進程之間共享“代碼”內存頁(加載只讀可執(zhí)行代碼的內存區(qū)域)。比如外部庫和JVM的可執(zhí)行代碼是存放在可以跨進程安全共享的內存區(qū)域。共享內存會根據共享進程數量分攤到各個進程中。

另外值得一提的是Objects區(qū)域列出來的是當前進程存活的對象數量,這些信息對分析內存泄露問題也有指導意義。例如ViewRootImpl代表了當前進程存活的根view個數,ViewRootImpl是和window一一對應的,從ViewRootImpl的數量我們也可以分析是否有dialog或者其他窗口導致的內存泄露。

二、優(yōu)愛騰內存對比

APP 包名 版本
優(yōu)酷 com.youku.phone 7.6.7
愛奇藝 com.qiyi.video 10.2.0
騰訊視頻 com.tencent.qqlive 6.8.0

上面是測試使用的APP版本。為了對比應用自己申請的內存大小,我們列出來Private DirtyPrivate Clean及其他們的和Private Total。驗證了以下三個場景:

  1. 打開APP進入首頁不做任何操作穩(wěn)定30s后測量內存數據;
  2. 在首頁往下滑動10屏以上穩(wěn)定后測量內存數據;
  3. 退出應用殺掉進程,重新進入首頁,搜索《人民的名義》點擊01集進入播放頁,關閉彈幕全屏播放高清資源一分鐘后測量內存數據;
    測量數據如下,單位都是KB。


    優(yōu)愛騰內存對比

    內存對比圖

上面是三家APP不同場景內存對比圖,實現同樣的功能內存耗用越低越好??梢钥闯?,優(yōu)酷在首頁上內存的使用是最為高效,愛奇藝的播放器在內存使用方面做得最好。還有一點就是愛奇藝在每個階段Private Clean使用都是最小的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容