Android çalışma zamanı (ART), uygulamalar ve bazı sistemler tarafından kullanılan yönetilen çalışma zamanıdır kullanıma sunuyoruz. ART ve öncüsü Dalvik, ilk başta geliştirildi özel olarak üretiyoruz. Çalışma zamanı Dalvik'i yürütürken ART yürütülebilir (DEX) biçimi ve DEX bayt kodu spesifikasyonu.
ART ve Dalvik, DEX bayt kodu çalıştıran uyumlu çalışma zamanlarıdır, dolayısıyla uygulamalar çalışması için geliştirilmiştir. Ancak bazı ve teknikler ART'ta işe yaramaz. Daha fazla bilgi için en önemli sorunlar için Doğrulama Android çalışma zamanında (ART) uygulama davranışı.
ART özellikleri
ART tarafından uygulanan bazı önemli özellikler aşağıda belirtilmiştir.
Zamandan önce (AOT) derlemesi
ART, uygulamayı iyileştirebilecek önceden (AOT) derleme sunuyor bazı yolları da görmüştük. ART, ayrıca Dalvik'e kıyasla daha sıkı bir yükleme süresi doğrulamasına sahiptir.
ART, yükleme sırasında cihazdaki verileri kullanarak uygulamaları derler. dex2oat aracını kullanın. Bu yardımcı program giriş olarak DEX dosyalarını kabul eder ve hedef cihaz için yürütülebilir derlenmiş bir uygulamadır. Yardımcı program, geçerli tüm DEX dosyalarını zorluk olmadan derleyin. Ancak bazı son işleme sonrası araçları, Dalvik tarafından tolere edilebilecek ancak ART tarafından derlenmiştir. Daha fazla bilgi için bkz. Adresleme Çöp Toplama Sorunları.
İyileştirilmiş atık toplama
Atık toplama (GC) yüksek miktarda kaynak yoğundur ve uygulamanın performansını olumsuz etkileyebilir. Bu da ekranların bozuk gösterilmesine, kullanıcı arayüzünün duyarlılığının zayıf olmasına ve başka sorunlara yol açar. ART ile çöpler iyileşiyor çeşitli şekillerde toplamanızı sağlar:
- Tek bir GC duraklatması ile çoğunlukla eş zamanlı tasarım
- Arka plan bellek kullanımını ve parçalamayı azaltmak için eşzamanlı kopyalama
- GC duraklatmasının uzunluğu yığın boyutundan bağımsızdır
- Özel temizleme durumu için toplam GC süresi daha düşük olan toplayıcı yeni ayrılmış, kısa ömürlü nesneler
- Atık toplama ergonomik özellikleri iyileştirildi ve eşzamanlı atık oluşur
koleksiyonları daha güncel hale getirir. Bu,
GC_FOR_ALLOC
Tipik kullanım durumlarında son derece nadir görülen olaylar
Geliştirme ve hata ayıklamayla ilgili iyileştirmeler
ART, uygulama geliştirmeyi ve hata ayıklamayı iyileştirmek için çeşitli özellikler sunar.
Örnekleme profil aracı desteği
Geliştiriciler geçmişte Traceview araç (izleme için tasarlanmış uygulama yürütme) sağlar. Traceview faydalı bilgiler sağlasa da elde ettiği sonuçlar, yöntem başına çağrı ek yükü nedeniyle yanıltıcı bir şekilde çalışmasının çalışma zamanı performansını önemli ölçüde etkilediğini fark ettik.
ART, aşağıdakilere sahip olmayan özel bir örnekleme profili oluşturucu için destek sağlar: sınırlamaları vardır. Bu sayede uygulama yürütülürken ihtiyaç duyacağınız her şeye yol açabilir. Şunun için İzleme Görünümü'ne örnekleme desteği eklendi: Dalvik, KitKat sürümünde kullanıma sunuldu.
Daha fazla hata ayıklama özelliği desteği
ART, özellikle izleme ve işlevi görmelerini sağlar. Örneğin, şunları yapabilirsiniz:
- Yığın izlemelerde hangi kilitlerin tutulduğunu görün, ardından kilitleniyor.
- Belirli bir sınıfın kaç canlı örneği olduğunu sorun, ve hangi referansların bir nesneyi yayında tuttuğunu görebilirsiniz.
- Belirli bir örnek için etkinlikleri (ayırma noktası gibi) filtreleyin.
- Bir yöntem çıktığında döndürülen değeri görme ("method-exit" kullanarak) etkinlikler).
- Belirli bir şu anda programın yürütülmesini askıya almak için alan izleme noktasını ayarlayın alanına erişildiğinde ve/veya değiştirildiğinde.
İstisnalarda ve kilitlenme raporlarında gelişmiş teşhis ayrıntıları
ART, çalışma zamanı istisnaları olduğunda size mümkün olduğunca fazla bağlam ve ayrıntı sağlar
meydana gelir. ART, java.lang.ClassCastException
için genişletilmiş istisna ayrıntıları sunar.
java.lang.ClassNotFoundException
,
ve java.lang.NullPointerException
.
(Dalvik'in sonraki sürümleri, java.lang.ArrayIndexOutOfBoundsException
için genişletilmiş istisna ayrıntıları sağladı
ve java.lang.ArrayStoreException
,
Bunlar artık dizinin boyutunu ve sınırların dışındaki ofseti ve ART'yi içerir.
aynı şekilde çalışır.)
Örneğin, java.lang.NullPointerException
uygulamanın boş işaretçiyle yapmaya çalıştığı
bilgiler gösteriliyor.
(ör. uygulamanın yazmaya çalıştığı alan veya yazmaya çalıştığı yöntem)
çağrısına bir tıklama URL'si eklemeniz gerekir. Aşağıda tipik birkaç örnek verilmiştir:
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, uygulama yerel kilitlenme raporlarında iyileştirilmiş bağlam bilgileri de sağlar. ekleyerek Google Cloud'u geliştirmeyi sağlar.
Sorun bildirme
Uygulama JNI sorunlarından kaynaklanmayan bir sorunla karşılaşırsanız
Android Açık Kaynağı üzerinden
Proje Sorunları Takip Aracı. Bir adb bugreport
ve bağlantı ekleyin:
varsa uygulama Google Play Store'da. Aksi takdirde, mümkünse bir
APK'yı kullanarak sorunu yeniden üretin.