Android Runtime (ART) adalah runtime terkelola yang digunakan oleh aplikasi dan beberapa sistem layanan IT di Android. ART dan pendahulunya, Dalvik, awalnya dibuat khususnya untuk project Android. ART saat runtime mengeksekusi Dalvik format yang dapat dieksekusi (DEX) dan spesifikasi bytecode DEX.
ART dan Dalvik adalah runtime kompatibel yang menjalankan bytecode DEX, sehingga aplikasi yang dikembangkan untuk Dalvik seharusnya berfungsi saat dijalankan dengan ART. Namun, beberapa yang berfungsi pada Dalvik tidak berfungsi di ART. Untuk mengetahui informasi tentang masalah yang paling penting, lihat Memverifikasi perilaku aplikasi pada Android Runtime (ART).
Fitur ART
Berikut adalah beberapa fitur utama yang diterapkan oleh ART.
Kompilasi mendahului-waktu (Ahead-of-Time/AOT)
ART memperkenalkan kompilasi ahead-of-time (AOT), yang dapat meningkatkan kualitas aplikasi tingkat tinggi. ART juga memiliki verifikasi waktu pemasangan yang lebih ketat daripada Dalvik.
Pada waktu penginstalan, ART mengompilasi aplikasi menggunakan dex2oat. Utilitas ini menerima file DEX sebagai input dan membuat aplikasi terkompilasi yang dapat dieksekusi untuk perangkat target. Alat tersebut harus dapat mengompilasi semua file DEX yang valid tanpa kesulitan. Namun, beberapa pasca-pemrosesan menghasilkan file tidak valid yang dapat ditoleransi oleh Dalvik, tetapi tidak dapat dikompilasi oleh ART. Untuk informasi selengkapnya, lihat Mengatasi Masalah Pengumpulan Sampah.
Peningkatan pembersihan sampah memori
Pembersihan sampah memori (GC) sangat intensif sumber daya, yang dapat mengganggu kinerja aplikasi, menyebabkan tampilan putus-putus, responsivitas UI yang buruk, dan masalah lainnya. ART meningkatkan kualitas sampah pengumpulan data dalam beberapa cara:
- Sebagian besar desain serentak dengan satu jeda GC
- Penyalinan serentak untuk mengurangi penggunaan dan fragmentasi memori latar belakang
- Durasi jeda GC tidak bergantung pada ukuran heap
- Kolektor dengan total waktu GC lebih rendah untuk kasus khusus pembersihan objek berumur pendek yang baru dialokasikan
- Peningkatan ergonomi pembersihan sampah memori, membuat sampah serentak
koleksi lebih tepat waktu, sehingga
GC_FOR_ALLOC
sangat jarang terjadi dalam kasus penggunaan umum
Peningkatan pengembangan dan proses debug
ART menawarkan sejumlah fitur untuk meningkatkan pengembangan dan proses debug aplikasi.
Dukungan untuk profiler pengambilan sampel
Sebelumnya, developer menggunakan Traceview alat (dirancang untuk pelacakan eksekusi aplikasi) sebagai profiler. Sementara {i>Traceview<i} memberikan informasi yang berguna, hasilnya pada Dalvik telah condong ke arah overhead panggilan per metode, dan menggunakan alat tersebut sangat memengaruhi performa waktu proses.
ART menambahkan dukungan untuk profiler pengambilan sampel khusus yang tidak memiliki keterbatasan praktik. Hal ini memberikan gambaran yang lebih akurat tentang eksekusi aplikasi tanpa perlambatan yang signifikan. Dukungan pengambilan sampel ditambahkan ke Traceview untuk Dalvik dalam rilis KitKat.
Dukungan untuk fitur proses debug lainnya
ART mendukung sejumlah opsi debug baru, terutama di monitor- dan fungsionalitas terkait pembersihan sampah memori. Misalnya, Anda dapat:
- Lihat kunci yang ditahan di stack trace, lalu beralihlah ke thread yang memegang kunci.
- Tanyakan berapa banyak {i>live instance <i}yang ada pada kelas tertentu, tanyakan untuk dan melihat referensi apa yang membuat sebuah objek tetap aktif.
- Memfilter peristiwa (seperti titik henti sementara) untuk instance tertentu.
- Melihat nilai yang ditampilkan oleh metode saat keluar (menggunakan “method-exit” peristiwa).
- Tetapkan watchpoint kolom untuk menangguhkan eksekusi program saat diakses dan/atau diubah.
Detail diagnostik yang ditingkatkan dalam pengecualian dan laporan error
ART memberi Anda sebanyak mungkin konteks dan detail saat pengecualian runtime
terjadi. ART memberikan detail pengecualian yang diperluas untuk java.lang.ClassCastException
,
java.lang.ClassNotFoundException
,
dan java.lang.NullPointerException
.
(Versi Dalvik berikutnya memberikan detail pengecualian yang diperluas untuk java.lang.ArrayIndexOutOfBoundsException
dan java.lang.ArrayStoreException
,
yang sekarang mencakup ukuran array dan offset luar batas, serta ART
juga melakukannya.)
Misalnya, java.lang.NullPointerException
sekarang menampilkan informasi tentang apa yang coba
dilakukan aplikasi dengan pointer null,
seperti kolom tempat aplikasi mencoba
menulis, atau metode yang digunakan untuk
panggilan telepon. Berikut beberapa contoh umumnya:
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 menyediakan informasi konteks yang ditingkatkan dalam laporan masalah pada native aplikasi, dengan menyertakan informasi stack Java dan native.
Melaporkan masalah
Jika Anda mengalami masalah yang bukan disebabkan oleh masalah JNI aplikasi, laporkan
mereka melalui Android Open Source
Issue Tracker Project. Sertakan adb bugreport
dan link ke
aplikasi di Google Play Store jika tersedia. Atau, jika memungkinkan, pasang
APK yang mereproduksi masalah.