第一個 Zygote 啟動時,先 preload 大多數需要的 class 進 ram 裡。
之後 收到 socket 的 command 再 fork 一個 process 來啟動一個 activity,
所以那個 activity 啟動的時候,所有的 class 都已經 load 好了---
又因為 linux fork 的動作只是把 memory map 到 fork 的 process,
並沒有作 copy memory ,所以 fork 超快。
綜合以上兩點,preload class 可以減少"實體"記憶體的使用,同時也以加快 activity 啟動的速度。
缺點就是 啟動的時間會變慢。
-- 變慢這一點是值得懷疑的,因為即使 dalvik 啟動時不 preload,第一個 activity 啟動時,還是要 load 這些 class 呀。
沒有留言:
張貼留言