Küsimus:
Mida teeb sigootprotsess endiselt Android L-s?
John
2014-07-15 07:49:33 UTC
view on stackexchange narkive permalink

Püüan välja selgitada Dalviku ja ART käitamise konkreetsed erinevused. Mõistan, et ART ei kasuta enam Dalvik VM-i, kuid üks esimesi asju, mida pärast Android L eelvaate installimist märkasin, oli see, et sügootprotsess töötab endiselt. Kui nad Dalvik VM-ist tõepoolest lahti saaksid, kas see ei muudaks sügootprotsessi kasutuks? Lisaks on AOSP kaudu välja antud lähtekoodi kontrollimisel endiselt suur osa Dalvikust alles.

Raske teada, see on arendaja väljaanne ja FAR täielikust. Sellesse on praegu sisse õmmeldud palju Kitkat / Jellybeani, et see lihtsalt tööle saada ja käivitada.
Olles endiselt "arendaja *** eelvaade ***", ei pruugi spekuleerida kuigi mõttekas (kuigi ma järgin Dani selgitust). See võib olla nii, nagu Dan kirjeldas, või see võib olla "üle jäänud", mis pole veel "täielikult vananenud". Kui see töötab endiselt L-Release'il, on see teine ​​asi.
üks vastus:
Dan Hulme
2014-07-15 16:02:56 UTC
view on stackexchange narkive permalink

Zygote ei ole tegelikult Dalvikuga seotud, see on lihtsalt init-protsess. Zygote on meetod, mida Android rakenduste käivitamiseks kasutab. Selle asemel, et iga uut protsessi alustada nullist, laaditakse kogu süsteem ja Androidi raamistik uuesti iga kord, kui soovite rakendust käivitada, teeb see selle protsessi üks kord ja peatub sel hetkel, enne kui Zygote on midagi rakenduspõhist teinud . Seejärel, kui soovite rakendust käivitada, hargneb protsess Zygote ja lapseprotsess jätkub sealt, kus pooleli jäi, laadides rakenduse ise virtuaalsesse masinasse.

Kuigi see meetod loodi algselt Dalviku jaoks, on seal pole põhjust, miks ART ei peaks käituma täpselt samamoodi. See ei pea JIT-i kompileerima rakendusi nende töötamise ajal, kuid sellel on siiski palju rakendustest sõltumatuid Java-asju (st kogu Androidi raamistik) laadida, seega on mõttekas kasutada sama kahvlit millal- koormatud meetod uute protsesside alustamiseks.

Nii suure projekti puhul on loomulik, et Dalvikust jääks veel muid ülejääke, mis on Dalviku-järgses maailmas endiselt kasulikud, nii et te ei peaks imestama, et on veel üks kood, mis oli algselt kirjutatud Dalviku osaks või sellega töötamiseks. See on ART-i jaoks endiselt kasutatav.

Sobib minu arusaamaga Zygotest (mitte-dev). "Kasutaja vaates" on ilmselt lihtsam mõelda Zygotest kui "rakendusserverist", mis toimib rakenduste ja operatsioonisüsteemi vahelise "abstraktsioonikihina" (kuidagi nagu HAL teeb riistvara abstraktseks): vahet pole mis on "allpool" (Dalvik või ART), liides käsitleb "asju"?
See võib hõlbustada Zygote'ist kui rakendusserverist mõtlemist, kuid see pole eriti täpne kirjeldus. See on lihtsalt see osa operatsioonisüsteemist, mis käivitab rakendused, ja see on väga palju rakenduse ja OS-i piiri OS-i poolel.
Aitäh, nii et vähemalt minu "põhiline arusaam" oli õige (olen teadlik, et "rakendusserver" pole täpne, kuid "tavakasutaja" jaoks on seda lihtsam mõista - nii et teeme selle "rakendus * teenus *", et see tuua edasi OS-i poolel;)
See, mis on lähtekoodis olemas, pole "ülejäägid" ja me ei ole Dalviku-järgsel ajastul! Dalviki bittkood on endiselt kasutatav infrapuna. Isegi kõrgeima sätte korral pole kõik AOT-kompileeritud ja mõned asjad tuleb veel tõlgendada. Nende jaoks on olemas * DalvikVM *. Samuti kasutavad vähese salvestusruumiga seadmed vähem AOT-d rohkem tõlgendusi. Lõpuks lisab sügoot paljudele sageli kasutatavatele klassidele, mis võib ruumi kokku hoida, kuna neid saab mitme rakenduse vahel jagada.
@Paschalis ajate segamini JITi koostamise DalvikVM-iga. See, et ART do JIT (just-in-time) kogumiku uuemad versioonid ei tähenda, et Dalvik endiselt olemas oleks. Oracle Java teeb ka JIT-i kompileerimist, ei tähenda, et see Dalviki kasutab
** mu mu eelmise kommentaari muutmine: ** `b̶i̶t̶c̶o̶d̶e̶` ->` bytecode`. `D̶a̶l̶v̶i̶k̶V̶M̶` ->` ART tõlgendaja`. `DalvikVM` ei kasutata. Kuid selle tõlk ja JIT on ühendatud ART-i.
DalvikVM tegi varem suulise tõlke ja JITi. ART teeb AOT, JIT (> = Nougat) ja tõlgendab. Kompileerimisel (olgu see siis JIT või AOT) võetakse `Dalvik bytecode` (oracle võtab Java bytecode) ja teisendab selle. APK sisaldab lihtsalt dalviki baidekoodi ja kui "dex2oat" selle kompileerib, [filtrid] (https://source.android.com/devices/tech/dalvik/configure.html#compiler_filters) otsustab, mida AOT-le (ja käitusajal) profiilid otsustavad, mida JITile teha).


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...