10連休の夏休みも6/10が過ぎた7日目。
Twitterで鉄人出版社からAndroidの仮想マシンDalvik編が出たことを知って、どうしようかなと思い、Android 4.4(Kitkat)で導入されたART(Android Runtime)について、ネットで調べてみました。
まず始めに見たのは、Dalvik仮想マシンのアーキテクチャ。
続いて、ここが変だよDalvik仮想マシン。
おまけが、[告知 Dalvik仮想マシンの解説本を出版しました]
達人出版社の本の著者のスライドショーと告知です。
続いて、ここが変だよDalvik仮想マシン。
おまけが、[告知 Dalvik仮想マシンの解説本を出版しました]
達人出版社の本の著者のスライドショーと告知です。
InfoQのAndroidがAOT(ahead-on-time)コンパイラを採用の
うー、インストール時なら1回で済むし、各マシン用にある程度最適化できますからね!
引用 Androidの新しいランタイムでは,アプリケーションのインストール時に,デバイス上でOSがバイトコードをネイティブなマシンコードにコンパイルする。にあるように、JITでネイティブなマシンコードにするのではなく、端末にアプリをインストールするときに、ネイティブなマシンコードにするようです。
うー、インストール時なら1回で済むし、各マシン用にある程度最適化できますからね!
Android 4.4 のARTのブートログを見てみたによると、DalvikからARTに変えた後にリブートすると、dex2oatコマンドでdexファイルをネイティブなマシンコードに変換するため、ブートに時間がかかっていると。
Android 4.4に入ったARTのソースを見た感想による、dexファイルをLLVMのbitcodeに変えて、bitcodeをLLVMの最適化&コード生成でネイティブなマシンコードに変換していると。ここでもLLVM大活躍。
さらに、AndroidのARTでは実行中にプロファイリングを行ってそれに基づいて再コンパイルするようだによると、ARTで実行しているときにプロファイリングを取り、部分的に再コンパイルをして、最適化している。
ほにょー!と。
ほにょー!と。
DalvikVMに替わるランタイム ARTもあります。
そして、360 Chief Technical Expert: What Android L Means to Developersでは、oatファイル内には、dexファイルの内容も含まれているようです。なので、dexファイルをdex2oatでoatファイルに変換すると2倍以上になるのは理解できました。