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ı arayüzünün 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 referencetutucu1 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 iyileştirilmiş bağlam bilgileri sağlar.
Raporlama Sorunları
Uygulama JNI sorunlarından kaynaklanmayan herhangi bir sorunla karşılaşırsanız, bunları Android Açık Kaynak Proje Sorunu İ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.