Saya mencoba mencari tahu perbedaan spesifik dalam runtime Dalvik dan ART. Saya menyadari bahwa ART tidak lagi menggunakan Dalvik VM, namun, salah satu hal pertama yang saya perhatikan setelah menginstal pratinjau Android L adalah bahwa proses zygote masih berjalan. Jika mereka benar-benar menyingkirkan VM Dalvik, bukankah itu membuat proses zygote menjadi sia-sia? Selanjutnya, setelah memeriksa kode sumber yang dirilis melalui AOSP, sebagian besar Dalvik masih tersisa.
dalvik
art
5.0-lollipop
John
sumber
sumber
Jawaban:
Zygote tidak benar-benar terikat dengan Dalvik, itu hanya proses init. Zygote adalah metode yang digunakan Android untuk memulai aplikasi. Daripada harus memulai setiap proses baru dari awal, memuat seluruh sistem dan kerangka kerja Android baru setiap kali Anda ingin memulai aplikasi, itu melakukan proses itu sekali, dan kemudian berhenti pada titik itu, sebelum Zygote melakukan sesuatu yang spesifik aplikasi . Kemudian, ketika Anda ingin memulai aplikasi, proses Zygote bercabang, dan proses anak berlanjut di tempat yang ditinggalkannya, memuat aplikasi itu sendiri ke dalam VM.
Walaupun metode ini awalnya dirancang untuk Dalvik, tidak ada alasan ART tidak boleh berperilaku dengan cara yang persis sama. Itu tidak harus mengkompilasi aplikasi JIT saat sedang berjalan, tetapi masih memiliki banyak hal Java yang tidak tergantung aplikasi untuk memuat (yaitu seluruh kerangka Android), jadi masuk akal untuk menggunakan garpu-saat yang sama metode dimuat untuk memulai proses baru.
Itu wajar pada proyek besar sehingga akan ada sisa-sisa lainnya dari Dalvik yang masih berguna di dunia pasca-Dalvik, jadi Anda tidak perlu heran bahwa ada kode lain yang awalnya ditulis untuk menjadi bagian dari atau untuk bekerja dengan Dalvik, yang masih ada untuk digunakan ART.
sumber