Android版本:8.0
测试方法
编写一个只有一个Activity和Service的App,启动后修改进程和启动条件,执行adb shell dumpsys meminfo。
Activity里布局里面只要一个helloworld的TextView。
测试场景和对应数据
-
启动一个Activity查看PSS内存情况
19,227K: com.yuan.emptyapp (pid 7544 / activities)
18,385K: com.yuan.emptyapp (pid 7976 / activities)
19,556K: com.yuan.emptyapp (pid 8401 / activities) -
同一个进程 启动一个Activity和Service
19,274K: com.yuan.emptyapp (pid 7290 / activities)
18,117K: com.yuan.emptyapp (pid 7401 / activities)
18,274K: com.yuan.emptyapp (pid 17686 / activities) -
一个进程启动Activity,一个进程启动Service
17,473K: com.yuan.emptyapp (pid 18835 / activities) + 6,206K: com.yuan.emptyapp:MyService (pid 18852)
17,564K: com.yuan.emptyapp (pid 19505 / activities) + 6,126K: com.yuan.emptyapp:MyService (pid 19551)
18,095K: com.yuan.emptyapp (pid 20107 / activities) + 6,052K: com.yuan.emptyapp:MyService (pid 20130)
结论
- 同一个进程,单个Activity启动后占用内存约19M
- 同一个进程,单个Activity和Service启动后内存占用约19M,一个空的Service占用内存很小
- Activity和Service不同进程,启动后内存约18M+6M约等于24M
- Activity和Service不同进程,启动Activity后,点击TextView启动Service,同时杀掉Activity的进程,Service进程总内存约6M