Apa proses zygote yang masih dilakukan di Android L?


13

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.


1
Sulit diketahui, ini adalah rilis pengembang dan JAUH dari lengkap. Ada banyak Kitkat / Jellybean dijahit di dalamnya saat ini hanya untuk membuatnya bekerja dan boot.
RossC

Menjadi masih " pratinjau pengembang ", mungkin memang tidak masuk akal berspekulasi (meskipun saya mengikuti penjelasan Dan). Mungkin seperti yang dijelaskan Dan, atau mungkin "sisa" belum "sepenuhnya usang". Ketika masih berjalan pada L-Release, itu hal yang berbeda.
Izzy

Jawaban:


14

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.


Cocok dengan pemahaman saya tentang Zygote (menjadi non-dev). Dari "tampilan pengguna", mungkin membuat Zygote lebih mudah untuk dianggap sebagai "server aplikasi", bertindak sebagai "lapisan abstraksi" antara aplikasi dan OS (entah bagaimana seperti HAL lakukan pada perangkat keras abstrak): tidak masalah apa itu "di bawah" (Dalvik atau ART), antarmuka berurusan dengan "barang"?
Izzy

1
Mungkin membuatnya lebih mudah untuk menganggap Zygote sebagai server aplikasi, tetapi itu bukan deskripsi yang sangat akurat. Itu hanya bagian dari OS yang memulai aplikasi, dan itu sangat banyak di sisi OS dari batas aplikasi-OS.
Dan Hulme

Terima kasih, jadi setidaknya "pemahaman dasar" saya benar (saya sadar "server aplikasi" tidak akurat, tetapi lebih mudah dimengerti oleh "pengguna normal" - jadi mari kita jadikan " layanan aplikasi ", untuk membawanya lebih jauh pada sisi OS;)
Izzy

Apa yang ada dalam kode sumber bukanlah "sisa", dan kita tidak berada di era pasca-Dalvik! Bitcoin Dalvik masih IR yang digunakan. Bahkan dengan pengaturan tertinggi, tidak semuanya AOT-compilied, dan masih ada beberapa hal yang perlu ditafsirkan. Jadi, untuk ini, ada DalvikVM . Juga, perangkat dengan penyimpanan rendah, akan menggunakan interpretasi AOT lebih sedikit. Terakhir, zygote inits banyak tumpukan kelas yang sering digunakan, yang dapat menghemat ruang karena mereka dapat dibagi antara beberapa aplikasi.
Paschalis

@Paschalis Anda membingungkan JIT yang mengkompilasi dengan DalvikVM. Hanya karena kompilasi ART do JIT versi baru (tepat waktu), bukan berarti Dalvik masih ada. Oracle Java melakukan kompilasi JIT juga, tidak berarti menggunakan Dalvik
Martin Konecny
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.