Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
此页面由 Cloud Translation API 翻译。
Switch to English

Android Runtime (ART) 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 menjalankan format Dalvik Executable dan spesifikasi bytecode Dex.

ART dan Dalvik adalah runtime kompatibel yang menjalankan bytecode Dex, jadi aplikasi yang dikembangkan untuk Dalvik akan 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 di Android runtime (ART) .

Fitur ART

Berikut adalah beberapa fitur utama yang diterapkan oleh ART.

Kompilasi Ahead-of-time (AOT)

ART memperkenalkan kompilasi advance-of-time (AOT), yang dapat meningkatkan kinerja aplikasi. ART juga memiliki verifikasi waktu pemasangan yang lebih ketat daripada Dalvik.

Pada waktu penginstalan, ART mengumpulkan aplikasi menggunakan alat dex2oat di perangkat. Utilitas ini menerima file DEX sebagai masukan dan menghasilkan aplikasi terkompilasi yang dapat dieksekusi untuk perangkat target. Utilitas seharusnya dapat mengkompilasi semua file DEX yang valid tanpa kesulitan. Namun, beberapa alat pasca-pemrosesan menghasilkan file tidak valid yang dapat 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 intensif sumber daya, yang dapat mengganggu kinerja aplikasi, mengakibatkan tampilan terputus-putus, daya tanggap UI yang buruk, dan masalah lainnya. ART meningkatkan pengumpulan sampah dengan beberapa cara:

  • Sebagian besar desain serentak dengan satu jeda GC
  • Penyalinan bersamaan untuk mengurangi fragmentasi dan penggunaan memori latar belakang
  • Panjang jeda GC tidak tergantung pada ukuran heap
  • Kolektor dengan total waktu GC yang lebih rendah untuk kasus khusus pembersihan benda yang baru dialokasikan dan berumur pendek
  • Meningkatkan ergonomi pengumpulan sampah, membuat pengumpulan sampah serentak lebih tepat waktu, yang membuat kejadian GC_FOR_ALLOC sangat jarang dalam kasus penggunaan biasa

Peningkatan pengembangan dan debugging

ART menawarkan sejumlah fitur untuk meningkatkan pengembangan dan debugging aplikasi.

Dukungan untuk pengambilan sampel profiler

Secara historis, developer telah menggunakan fitur Traceview (dirancang untuk melacak eksekusi aplikasi) sebagai profiler. Meskipun Traceview memberikan informasi yang berguna, hasilnya di Dalvik telah dipengaruhi oleh overhead per-metode-panggilan, dan penggunaan alat tersebut secara nyata memengaruhi kinerja waktu proses.

ART menambahkan dukungan untuk profiler pengambilan sampel khusus yang tidak memiliki batasan ini. Ini memberikan tampilan 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, terutama dalam fungsionalitas terkait monitor dan pengumpulan sampah. Misalnya, Anda dapat:

  • Lihat kunci apa yang ditahan di jejak tumpukan, lalu lompat ke utas yang menahan kunci.
  • Tanyakan berapa banyak kejadian langsung yang ada untuk kelas tertentu, mintalah untuk melihat contoh, dan lihat referensi apa yang membuat suatu objek tetap hidup.
  • Filter peristiwa (seperti breakpoint) untuk instance tertentu.
  • Lihat nilai yang dikembalikan oleh metode saat keluar (menggunakan peristiwa "method-exit").
  • Setel titik pengamatan lapangan untuk menangguhkan pelaksanaan program ketika bidang tertentu diakses dan / atau dimodifikasi.

Detail diagnostik yang ditingkatkan dalam pengecualian dan laporan kerusakan

ART memberi Anda konteks dan detail sebanyak mungkin saat pengecualian waktu proses terjadi. ART menyediakan 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 melakukannya.)

Misalnya, java.lang.NullPointerException sekarang menampilkan informasi tentang apa yang coba dilakukan aplikasi dengan pointer null, seperti kolom tempat aplikasi coba tulis, 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 tumpukan asli dan Java.

Melaporkan Masalah

Jika Anda mengalami masalah apa pun yang bukan karena masalah JNI aplikasi, laporkan melalui Android Open Source Project Issue Tracker . Sertakan laporan adb bugreport dan tautkan ke aplikasi di Google Play Store jika tersedia. Jika tidak, jika memungkinkan, lampirkan APK yang mereproduksi masalah.