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, orijinal olarak Android projesi için özel olarak yaratılmıştı. Çalışma zamanı olarak ART, Dalvik Yürütülebilir biçimini ve Dex bayt kodu belirtimini 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. Ancak Dalvik üzerinde çalışan bazı teknikler ART üzerinde çalışmaz. En önemli sorunlar hakkında bilgi için Android çalışma zamanında (ART) uygulama davranışını doğrulama konusuna bakın.

SANAT Özellikleri

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

Zamanın ötesinde (AOT) derleme

ART, uygulama performansını artırabilecek önceden (AOT) derleme sunar. ART ayrıca Dalvik'ten daha sıkı kurulum zamanı doğrulamasına sahiptir.

Kurulum sırasında ART, uygulamaları cihazdaki dex2oat aracını kullanarak derler. Bu yardımcı program, DEX dosyalarını girdi olarak kabul eder ve hedef cihaz için derlenmiş bir uygulama yürütülebilir dosyası oluşturur. Yardımcı program tüm geçerli DEX dosyalarını zorlanmadan derleyebilmelidir. Ancak, 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ın Ele Alınması .

Geliştirilmiş çöp toplama

Çöp toplama (GC), kaynak kullanımı açısından oldukça yoğundur ve uygulamanın performansını olumsuz etkileyerek görüntü kesintisine, kullanıcı arabiriminin yanıt verme hızının düşük olmasına ve diğer sorunlara neden olabilir. ART, çöp toplama işlemini çeşitli şekillerde geliştirir:

  • Tek bir GC duraklaması ile çoğunlukla eşzamanlı tasarım
  • Arka plan bellek kullanımını ve parçalanmayı azaltmak için eşzamanlı kopyalama
  • GC duraklamasının uzunluğu yığın boyutundan bağımsızdır
  • Yakın zamanda tahsis edilmiş, kısa ömürlü nesneleri temizleme özel durumu için daha düşük toplam GC süresine sahip toplayıcı
  • İyileştirilmiş çöp toplama ergonomisi, eşzamanlı çöp toplama işlemlerini daha zamanında yaparak, 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 profili oluşturucu desteği

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

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

Daha fazla hata ayıklama özelliği için destek

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

  • Yığın izlerinde hangi kilitlerin tutulduğunu görün, ardından kilidi tutan iş parçacığına atlayın.
  • Belirli bir sınıfta kaç tane canlı örnek 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 ("yöntem-çıkış" 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ı ayarlayın.

İstisnalar ve kilitlenme raporlarında iyileştirilmiş tanılama 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ışı ofseti 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, uygulamanın boş göstericiyle ne yapmaya çalıştığıyla ilgili bilgileri gösteriyor. İşte bazı tipik örnekler:

java.lang.NullPointerException: Attempt to write to field 'int
android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object
reference
tutucu1 l10n-yer
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 gelişmiş bağlam bilgileri sağlar.

Raporlama Sorunları

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