Android çalışma zamanı (ART), kod profili oluşturma özelliğine sahip tam zamanında (JIT) derleyici içerir çalıştırılan Android uygulamalarının performansını sürekli olarak iyileştiren bir programdır. JIT derleyicisi, ART'ın mevcut ön-zaman (AOT) derleyicisini tamamlar ve çalışma zamanı performansını artırır, depolama alanından tasarruf sağlar, uygulamayı hızlandırır ve sistem güncellemeleri. Ayrıca, sistemden kaçınarak AOT derleyicisini geliştirir otomatik uygulama güncellemeleri veya uygulamaların yeniden derlenmesi sırasında yavaşlama (OTA) güncellemeler yaparken.
JIT ve AOT, benzer optimizasyon gruplarıyla aynı derleyiciyi kullansalar da oluşturulan kod aynı olmayabilir. JIT, çalışma zamanı türünü kullanır satır içine almayı daha iyi yapabilir ve yığın değişimini (OSR) etkinleştirir. her biri biraz farklı kod oluşturur.
JIT mimarisi
.JIT derleme
JIT derlemesi aşağıdaki etkinlikleri içerir:
.- Kullanıcı uygulamayı çalıştırır, ardından da
.dex
öğesinin yüklenmesi için ART tetiklenir dosyası olarak kaydedebilirsiniz..oat
dosyası (.dex
için AOT ikili programı) dosyası) kullanabilirsiniz..oat
dosyaları, düzenli olarak oluşturulur, her zaman derlenmiş kod (AOT ikili programı) içermez..oat
dosyası derlenmiş kod içermiyorsa ART çalıştırılır.dex
dosyasını yürütmek için JIT ve çevirmen aracılığıyla.
- JIT,
speed
derleme filtresi ("Mümkün olduğunca çok derleyin izin verilmez). - JIT profil verileri yalnızca erişebilir.
- AOT derlemesi (
dex2oat
) arka plan programı bu dosyayı Drive için ayrıştırır hoş geldiniz.
.
.Şekil 3. JIT arka plan programı etkinlikleri.
Google Play hizmeti, Google Play'deki bir diğer uygulama tarafından benzerdir.
JIT iş akışı
.- Profil oluşturma bilgileri kod önbelleğinde depolanır ve çöpe gönderilir
fazla veri toplamanıza
yardımcı olur.
- Uygulama etkinken anlık görüntünün arka plan tüm verileri (yani JIT'e tabi her şeyi) içerir.
- Her şeyin kaydedilmesi için herhangi bir girişimde bulunulmaz (çünkü bu, çalışma zamanı performansı).
- Yöntemler üç farklı durumda olabilir:
- yorumlandı (dex kod)
- JIT derlendi
- AOT derlendi
- Ön plan uygulamasını etkilemeden JIT çalıştırmak için bellek gereksinimi performans, söz konusu uygulamaya bağlıdır. Büyük uygulamalar daha fazla bellek gerektirir küçük uygulamalara göre daha önemlidir. Genel olarak, büyük uygulamalar yaklaşık 4 MB boyutunda sabitlenir.
JIT günlük kaydını aç
JIT günlük kaydını açmak için aşağıdaki komutları çalıştırın:
adb root
adb shell stop
adb shell setprop dalvik.vm.extra-opts -verbose:jit
adb shell start
JIT'i devre dışı bırak
JIT'i devre dışı bırakmak için aşağıdaki komutları çalıştırın:
adb root
adb shell stop
adb shell setprop dalvik.vm.usejit false
adb shell start
Derlemeyi zorunlu kıl
Derlemeyi zorunlu kılmak için aşağıdaki komutu çalıştırın:
adb shell cmd package compile
Belirli bir paketi derlemeye zorlamak için yaygın kullanım alanları:
- Profil tabanlı:
adb shell cmd package compile -m speed-profile -f my-package
. - Tam:
adb shell cmd package compile -m speed -f my-package
.
Tüm paketleri derlemeye zorlamak için genel kullanım alanları:
- Profil tabanlı:
adb shell cmd package compile -m speed-profile -f -a
. - Tam:
adb shell cmd package compile -m speed -f -a
.
Profil verilerini temizle
Android 13 veya önceki sürümlerde
Yerel profil verilerini temizlemek ve derlenmiş kodu kaldırmak için aşağıdaki komutu çalıştırın:
adb shell pm compile --reset
Android 14 veya sonraki sürümlerde
Yalnızca yerel profil verilerini temizlemek için:
adb shell pm art clear-app-profiles
Not: Android 13 komutundan farklı olarak ya da daha önceki bir sürüm içeriyorsa, bu komut yüklü olması gerekir.
Yerel profil verilerini temizlemek ve yerel profillerden oluşturulan derlenmiş kodu kaldırmak için: profil verilerini (ör. yükleme durumuna sıfırlamak için) aşağıdakini çalıştırın:
adb shell pm compile --reset
Not: Bu komut, uygulamayla birlikte yüklenen harici profil verileri (".dm")
Tüm derlenmiş kodları temizlemek için şu komutu çalıştırın:
adb shell cmd package compile -m verify -f
Not: Bu komut yerel profil verilerini saklar.