Android çalışma zamanı ve Dalvik

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.