Google 致力于为黑人社区推动种族平等。查看具体举措
此页面由 Cloud Translation API 翻译。
Switch to English

Android Çalışma Zamanı (ART) ve Dalvik

Android çalışma zamanı (ART), Android'deki uygulamalar ve bazı sistem hizmetleri tarafından kullanılan yönetilen çalışma zamanıdır. ART ve selefi Dalvik, başlangıçta özellikle Android projesi için oluşturuldu. Çalışma zamanı olarak ART, Dalvik Yürütülebilir formatını ve Dex bayt kodu spesifikasyonunu yürütür.

ART ve Dalvik, Dex bayt kodunu çalıştıran uyumlu çalışma zamanlarıdır, bu nedenle Dalvik için geliştirilen uygulamalar ART ile çalışırken çalışmalıdır. Bununla birlikte, Dalvik üzerinde çalışan bazı teknikler ART üzerinde çalışmaz. En önemli sorunlar hakkında bilgi için bkz.Android çalışma zamanında (ART) uygulama davranışını doğrulama .

ART Özellikleri

ART tarafından uygulanan başlıca özelliklerden bazıları şunlardır.

Zamanın ilerisinde (AOT) derlemesi

ART, uygulama performansını artırabilecek vaktinden önce (AOT) derleme sunar. ART ayrıca Dalvik'ten daha sıkı yükleme süresi doğrulamasına sahiptir.

ART, yükleme sırasında cihaz üzerindeki dex2oat aracını kullanarak uygulamaları derler. Bu yardımcı program, DEX dosyalarını girdi olarak kabul eder ve hedef cihaz için çalıştırılabilir derlenmiş bir uygulama oluşturur. Yardımcı program, tüm geçerli DEX dosyalarını zorluk çekmeden derleyebilmelidir. Bununla birlikte, bazı son işleme araçları Dalvik tarafından tolere edilebilen ancak ART tarafından derlenemeyen geçersiz dosyalar üretir. Daha fazla bilgi için bkz. Çöp Toplama Sorunlarını Ele Alma .

İyileştirilmiş çöp toplama

Çöp toplama (GC) çok yoğun kaynak gerektirir ve bu da bir uygulamanın performansını düşürebilir, bu da dalgalı görüntü, zayıf UI yanıt süresi ve diğer sorunlara neden olabilir. ART, çöp toplamayı birkaç şekilde iyileştirir:

  • Tek bir GC duraklamasıyla çoğunlukla eşzamanlı tasarım
  • Arka plan bellek kullanımını ve parçalanmayı azaltmak için eşzamanlı kopyalama
  • GC duraklatmasının uzunluğu yığın boyutundan bağımsızdır
  • Kısa süre önce ayrılmış, kısa ömürlü nesneleri temizlemek için özel durum için daha düşük toplam GC süresine sahip toplayıcı
  • Geliştirilmiş çöp toplama ergonomisi, eşzamanlı çöp toplamayı daha zamanında hale getirir, bu da GC_FOR_ALLOC olaylarını tipik kullanım durumlarında son derece nadir hale getirir

Geliştirme ve hata ayıklama iyileştirmeleri

ART, uygulama geliştirmeyi ve hata ayıklamayı iyileştirmek için bir dizi özellik sunar.

Örnekleme profil oluşturucu desteği

Tarihsel olarak geliştiriciler, Traceview aracını (uygulama yürütmeyi izlemek için tasarlanmıştır) profil oluşturucu olarak kullanmışlardır. Traceview yararlı bilgiler verirken, Dalvik'teki sonuçları yöntem çağrısı başına ek yük tarafından çarpıtılmıştır ve aracın kullanımı çalışma süresi performansını önemli ölçüde etkiler.

ART, bu sınırlamalara sahip olmayan özel bir örnekleme profilcisi için destek ekler. Bu, önemli bir yavaşlama olmaksızın uygulama yürütmenin daha doğru bir görünümünü sağlar. KitKat sürümünde Dalvik için Traceview'a örnekleme desteği eklendi.

Daha fazla hata ayıklama özelliği desteği

ART, özellikle monitör ve çöp toplama ile ilgili işlevsellikte bir dizi yeni hata ayıklama seçeneğini destekler. Örneğin şunları yapabilirsiniz:

  • Yığın izlemelerinde hangi kilitlerin tutulduğunu görün, ardından kilit tutan iş parçacığına atlayın.
  • Belirli bir sınıfın kaç canlı örneği olduğunu sorun, örnekleri görmeyi isteyin ve hangi referansların bir nesneyi canlı tuttuğunu görün.
  • Belirli bir örnek için olayları (kesme noktası gibi) filtreleyin.
  • Çıktığında bir yöntem tarafından döndürülen değere bakın ("method-exit" olaylarını kullanarak).
  • Belirli bir alana erişildiğinde ve / veya değiştirildiğinde bir programın yürütülmesini askıya almak için alan izleme noktasını ayarlayın.

İstisnalar ve kilitlenme raporlarında gelişmiş teşhis ayrıntıları

ART, çalışma zamanı istisnaları meydana geldiğinde size mümkün olduğunca fazla bağlam ve ayrıntı verir. ART, java.lang.ClassCastException , java.lang.ClassNotFoundException ve java.lang.NullPointerException için genişletilmiş istisna ayrıntısı sağlar. (Dalvik'in sonraki sürümleri, java.lang.ArrayIndexOutOfBoundsException ve java.lang.ArrayStoreException için artık dizinin boyutunu ve sınır dışı uzaklığı içeren genişletilmiş istisna ayrıntısı sağladı ve ART bunu da yapıyor.)

Örneğin, java.lang.NullPointerException artık uygulamanın yazmaya çalıştığı alan veya çağırmaya çalıştığı yöntem gibi boş işaretçi ile ne yapmaya çalıştığı hakkında bilgi gösteriyor. İşte bazı tipik örnekler:

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 ayrıca, hem Java hem de yerel yığın bilgilerini dahil ederek uygulama yerel kilitlenme raporlarında iyileştirilmiş bağlam bilgileri sağlar.

Sorunları Bildirme

Uygulama JNI sorunlarından kaynaklanmayan herhangi bir sorunla karşılaşırsanız lütfen bunları Android Açık Kaynak Proje Sorun İzleyicisi aracılığıyla bildirin . Bir adb bugreport ekleyin ve varsa Google Play mağazasındaki uygulamaya bağlantı verin. Aksi takdirde, mümkünse sorunu yeniden oluşturan bir APK ekleyin.