其中 Zygote 是 Android 的 monitor process,負責:
1. Listening Socket (Forking child process, 執行 Android 應用程式)
2. Preload Resource
3. Preload Class
4. Start System Server
5. Enter Zygote Fork Mode
「System Server」是由 Zygote 所建立的另外一個 process
- 建立的方式是使用典型的 Linux system call - fork()。
- 當 Zygote 成功建立 system server 後,便進入 socket listening 模式。在此模式下,zygote 會監聽(listen)由 socket 所傳入的「命令」,並依據命令的內容啟動 Android 應用程式。
「Zygote Mode」: 在 socket 做 listening,並依據命令來 fork() 並執行外部 Android 應用程式。
Dalvik VM Class preloading
- 與 JVM 最大的不同是,Dalvik VM 透過 Zygote 進行「Class Preloading」,是 Dalvik VM 最重要的特色之一。
- 意思是,把絕大部份的「Java class file」載入記憶體。
- Java class file 被打包成 *.jar 檔,Java class file 就是 Java library,提供 Android 應用程式與框架所需的 API。
- 所載入的 class file,幾乎包含所有的 API,當然,大部份自已都用不到,因此稱之為「preload」,也就是「預載」。
- 透過 preload,讓 Android 應用程式在載入時,不需要重覆「class loading」的動作,除了加快應用程式啟動速度外,也達到許多效果。
- 在 Android 裝置開機時進行,可能產生的不良效應之一就是「開機變慢」,不過,已經有一些方法可以解決這個問題。
* Reference
- Jollen 的 Android 觀念解析, #1: Zygote Mode
- Dalvik VM 與 JVM 差異比較:Zygote 與 Class Preload
沒有留言:
張貼留言