Waktu proses Android dan Dalvik

Android runtime (ART) adalah runtime terkelola yang digunakan oleh aplikasi dan beberapa layanan sistem di Android. ART dan pendahulunya Dalvik awalnya dibuat khusus untuk proyek Android. ART sebagai runtime mengeksekusi format Dalvik executable (DEX) dan spesifikasi bytecode DEX.

ART dan Dalvik adalah runtime kompatibel yang menjalankan bytecode DEX, sehingga aplikasi yang dikembangkan untuk Dalvik harus berfungsi saat dijalankan dengan ART. Namun, beberapa teknik yang berhasil pada Dalvik tidak berhasil pada ART. Untuk informasi tentang masalah paling penting, lihat Memverifikasi perilaku aplikasi pada runtime Android (ART) .

fitur SENI

Berikut adalah beberapa fitur utama yang diterapkan oleh ART.

Kompilasi sebelumnya (AOT).

ART memperkenalkan kompilasi sebelumnya (AOT), yang dapat meningkatkan kinerja aplikasi. ART juga memiliki verifikasi waktu instalasi yang lebih ketat dibandingkan Dalvik.

Pada waktu penginstalan, ART mengkompilasi aplikasi menggunakan alat dex2oat di perangkat. Utilitas ini menerima file DEX sebagai masukan dan menghasilkan aplikasi terkompilasi yang dapat dieksekusi untuk perangkat target. Utilitas ini seharusnya dapat mengkompilasi semua file DEX yang valid tanpa kesulitan. Namun, beberapa alat pasca-pemrosesan menghasilkan file tidak valid yang mungkin ditoleransi oleh Dalvik tetapi tidak dapat dikompilasi oleh ART. Untuk informasi lebih lanjut, lihat Mengatasi Masalah Pengumpulan Sampah .

Pengumpulan sampah yang lebih baik

Pengumpulan sampah (GC) sangat memerlukan banyak sumber daya, yang dapat mengganggu kinerja aplikasi, mengakibatkan tampilan terputus-putus, respons UI yang buruk, dan masalah lainnya. ART meningkatkan pengumpulan sampah dalam beberapa cara:

  • Sebagian besar desain bersamaan dengan satu jeda GC
  • Penyalinan serentak untuk mengurangi penggunaan memori latar belakang dan fragmentasi
  • Lamanya jeda GC tidak bergantung pada ukuran heap
  • Kolektor dengan total waktu GC lebih rendah untuk kasus khusus pembersihan objek berumur pendek yang dialokasikan baru-baru ini
  • Peningkatan ergonomi pengumpulan sampah, membuat pengumpulan sampah secara bersamaan menjadi lebih tepat waktu, sehingga kejadian GC_FOR_ALLOC sangat jarang terjadi dalam kasus penggunaan umum

Peningkatan pengembangan dan debugging

ART menawarkan sejumlah fitur untuk meningkatkan pengembangan dan debugging aplikasi.

Dukungan untuk pengambilan sampel profiler

Secara historis, pengembang telah menggunakan alat Traceview (dirancang untuk melacak eksekusi aplikasi) sebagai profiler. Meskipun Traceview memberikan informasi yang berguna, hasilnya pada Dalvik telah dipengaruhi oleh overhead per-metode-panggilan, dan penggunaan alat ini sangat mempengaruhi kinerja waktu proses.

ART menambahkan dukungan untuk profiler pengambilan sampel khusus yang tidak memiliki batasan ini. Hal ini memberikan gambaran eksekusi aplikasi yang lebih akurat tanpa perlambatan yang signifikan. Dukungan pengambilan sampel telah ditambahkan ke Traceview untuk Dalvik dalam rilis KitKat.

Dukungan untuk lebih banyak fitur debugging

ART mendukung sejumlah opsi debugging baru, khususnya dalam fungsi yang berhubungan dengan monitor dan pengumpulan sampah. Misalnya, Anda dapat:

  • Lihat kunci apa yang disimpan dalam jejak tumpukan, lalu lompat ke thread yang menyimpan kunci.
  • Tanyakan berapa banyak instance langsung yang ada pada kelas tertentu, mintalah untuk melihat instance tersebut, dan lihat referensi apa yang membuat suatu objek tetap hidup.
  • Filter peristiwa (seperti breakpoint) untuk contoh tertentu.
  • Lihat nilai yang dikembalikan oleh suatu metode ketika metode tersebut keluar (menggunakan peristiwa “metode-keluar”).
  • Tetapkan titik pengawasan bidang untuk menangguhkan eksekusi program ketika bidang tertentu diakses dan/atau diubah.

Peningkatan detail diagnostik dalam pengecualian dan laporan kerusakan

ART memberi Anda konteks dan detail sebanyak mungkin saat pengecualian runtime terjadi. ART memberikan detail pengecualian yang diperluas untuk java.lang.ClassCastException , java.lang.ClassNotFoundException , dan java.lang.NullPointerException . (Versi Dalvik yang lebih baru memberikan detail pengecualian yang diperluas untuk java.lang.ArrayIndexOutOfBoundsException dan java.lang.ArrayStoreException , yang sekarang menyertakan ukuran array dan offset di luar batas, dan ART juga melakukan hal ini.)

Misalnya, java.lang.NullPointerException sekarang menampilkan informasi tentang apa yang coba dilakukan aplikasi dengan penunjuk nol, seperti bidang yang coba ditulis oleh aplikasi, atau metode yang coba dipanggil. Berikut beberapa contoh tipikal:

java.lang.NullPointerException: Attempt to write to field 'int
android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object
reference
java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.lang.Object.toString()' on a null object reference

ART juga memberikan informasi konteks yang lebih baik dalam laporan kerusakan asli aplikasi, dengan menyertakan informasi Java dan tumpukan asli.

Laporkan masalah

Jika Anda mengalami masalah apa pun yang bukan disebabkan oleh masalah JNI aplikasi, laporkan melalui Pelacak Masalah Proyek Sumber Terbuka Android . Sertakan adb bugreport dan tautan ke aplikasi di Google Play Store jika tersedia. Jika tidak, jika memungkinkan, lampirkan APK yang mereproduksi masalah tersebut.