Google berkomitmen untuk memajukan ekuitas ras untuk komunitas kulit hitam. Lihat bagaimana.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Android Runtime (ART) dan Dalvik

Android runtime (ART) adalah runtime yang dikelola yang digunakan oleh aplikasi dan beberapa layanan sistem di Android. ART dan pendahulunya Dalvik pada awalnya dibuat khusus untuk proyek Android. ART sebagai runtime menjalankan format Dalvik Executable dan spesifikasi bytecode Dex.

ART dan Dalvik adalah runtime yang kompatibel yang menjalankan bytecode Dex, jadi aplikasi yang dikembangkan untuk Dalvik akan berfungsi saat berjalan dengan ART. Namun, beberapa teknik yang bekerja pada Dalvik tidak bekerja pada ART. Untuk informasi tentang masalah paling penting, lihat Memverifikasi perilaku aplikasi pada runtime Android (ART) .

Fitur ART

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 pemasangan yang lebih ketat daripada Dalvik.

Pada waktu pemasangan, ART mengkompilasi aplikasi menggunakan alat dex2oat pada perangkat. Utilitas ini menerima file DEX sebagai input dan menghasilkan aplikasi yang dikompilasi yang dapat dieksekusi untuk perangkat target. Utilitas harus dapat mengompilasi semua file DEX yang valid tanpa kesulitan. Namun, beberapa alat pasca-pemrosesan menghasilkan file yang 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 ditingkatkan

Pengumpulan sampah (GC) dapat mengganggu kinerja aplikasi, menghasilkan tampilan berombak, responsif UI yang buruk, dan masalah lainnya. ART meningkatkan pengumpulan sampah dengan beberapa cara:

  • Satu GC jeda, bukan dua
  • Pemrosesan paralel dengan sisa jeda GC
  • Kolektor dengan total waktu GC yang lebih rendah untuk kasus khusus pembersihan objek yang baru saja dialokasikan dan berumur pendek
  • Ergonomi pengumpulan sampah yang ditingkatkan, menjadikan pengumpulan sampah secara bersamaan lebih tepat waktu, yang menjadikan acara GC_FOR_ALLOC sangat jarang dalam kasus penggunaan khusus
  • Memadatkan GC untuk mengurangi penggunaan memori latar belakang dan fragmentasi

Pengembangan dan peningkatan debugging

ART menawarkan sejumlah fitur untuk meningkatkan pengembangan aplikasi dan debugging.

Dukungan untuk profiler pengambilan sampel

Secara historis, pengembang telah menggunakan alat Traceview (dirancang untuk melacak eksekusi aplikasi) sebagai profiler. Sementara Traceview memberikan informasi yang bermanfaat, hasilnya pada Dalvik telah condong oleh biaya overhead per-metode-panggilan, dan penggunaan alat secara nyata mempengaruhi kinerja run time.

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

Mendukung lebih banyak fitur debug

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

  • Lihat kunci yang ditahan di jejak tumpukan, lalu lompat ke utas yang memegang kunci.
  • Tanyakan berapa banyak instance langsung dari kelas yang diberikan, minta untuk melihat instance, dan lihat referensi apa yang menjaga objek tetap hidup.
  • Saring acara (seperti breakpoint) untuk contoh tertentu.
  • Lihat nilai yang dikembalikan oleh metode ketika keluar (menggunakan peristiwa "metode-keluar").
  • Tetapkan titik pandang lapangan untuk menunda eksekusi 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 ketika pengecualian runtime 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 termasuk 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 pointer nol, seperti bidang yang coba dituliskan oleh aplikasi, atau metode yang coba dipanggil. Berikut adalah beberapa contoh khas:

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 kerusakan asli aplikasi, dengan memasukkan informasi Java dan tumpukan asli.

Masalah Pelaporan

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