Android Lでまだ接合プロセスは何をしていますか?


13

DalvikランタイムとARTランタイムの具体的な違いを理解しようとしています。ARTがDalvik VMを使用していないことに気づきましたが、Android Lプレビューのインストール後に最初に気付いたのは、zygoteプロセスがまだ実行中であることです。彼らがDalvik VMを本当に取り除くなら、それはzygoteプロセスを役に立たないのではないでしょうか?さらに、AOSP経由でリリースされたソースコードを検査したところ、Dalvikの大部分がまだ残っています。


1
わかりにくいですが、これは完全な開発者向けリリースおよびFARです。現時点では、キットカット/ジェリービーンがたくさん機能していて、機能して起動するだけです。
RossC 2014

まだ「開発者プレビューなので、実際に推測するのはあまり意味がありません(ただし、Danの説明に従います)。それは、Danが説明したとおりかもしれませんし、まだ「完全に廃止されていない」「残り物」かもしれません。L-Releaseでまだ実行されている場合、それは別のことです。
イジー

回答:


14

Zygoteは、Dalvikと実際に結びついているわけではなく、単なる初期化プロセスです。Zygoteは、Androidがアプリを起動するために使用する方法です。新しいプロセスを最初から開始する必要はなく、アプリを起動するたびにシステム全体とAndroidフレームワークを新たにロードするのではなく、そのプロセスを一度実行してから、Zygoteがアプリ固有の処理を行う前にその時点で停止します。 。次に、アプリを起動するときに、Zygoteプロセスが分岐し、子プロセスは中断したところから続行して、アプリ自体をVMにロードします。

このメソッドは元々Dalvik用に設計されましたが、ARTがまったく同じように動作しないはずがある理由はありません。アプリの実行中にアプリをJITコンパイルする必要はありませんが、アプリに依存しない多くのJava要素(つまり、Androidフレームワーク全体)をロードする必要があるため、同じfork-when-を使用するのは理にかなっています新しいプロセスを開始するためにロードされたメソッド。

大規模なプロジェクトでは当然のことですが、ダルビック後の世界でまだ有用なDalvikの残りが存在するので、元々その一部または目的で記述された他のコードがあることに驚かないでください。 Dalvikで作業します。これは、ARTがまだ使用していることです。


Zygote(非開発者)に対する私の理解と一致します。「ユーザービュー」から見ると、Zygoteを「アプリケーションサーバー」と見なし、アプリとOSの間の「抽象化レイヤー」として機能することが容易になります(HALがハードウェアを抽象化するのと同じように)。 「下」とは何ですか(ダルビクまたはART)、インターフェースは「もの」を扱いますか?
イジー

1
Zygoteをアプリケーションサーバーとして考えるのが簡単になるかもしれませんが、これはあまり正確な説明ではありません。アプリを起動するのはOSの一部にすぎず、アプリとOSの境界のOS側にあります。
Dan Hulme、2014

おかげで、少なくとも私の「基本的な理解」は正しかった(「アプリケーションサーバー」は正確ではないが、「通常のユーザー」が理解しやすいことに気づいている。それで、それを「アプリケーションサービス」にして、さらに活用してみましょう。OS側;)
イジー

ソースコードに存在するのは「残り物」ではなく、ダルビック以降の時代ではありません。Dalvikビットコードはまだ使用されているIRです。最高の設定であっても、すべてがAOTに準拠しているわけではなく、解釈する必要のあるものがまだいくつかあります。したがって、これらには、DalvikVMがあります。また、ストレージが少ないデバイスは、AOTの使用量を減らし、解釈を増やします。最後に、zygoteは頻繁に使用されるクラスのヒープを初期化します。これにより、複数のアプリケーション間で共有できるため、スペースを節約できます。
Paschalis

@PaschalisあなたはDalvikVMでJITコンパイルを混乱させています。ARTの新しいバージョンがJIT(ジャストインタイム)コンパイルを行うからといって、Dalvikがまだ存在しているという意味ではありません。Oracle JavaはJITコンパイルも行いますが、Dalvikを使用しているわけではありません
Martin Konecny 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.