Performans analizi ve optimizasyonu için Android Profilini kullanın

Önsöz

Beş yıldır Android geliştirme yapıyorum ve geliştirme araçları orijinal eclipse + ADT eklentisinden AndroidStduio'ya geçti. Google, Android uygulama performansı analiz aracını AndroidStudio'nun yeni sürümüne entegre etti Profil .

Bu makale, AndroidStudio 3.2.1'in resmi sürümüne göre sorunun nedenini analiz eder ve bulur. İndirme adresini ekleyin:

  • Windows için indirin
  • Mac için indirin
  • Linux sürümünü indirme
  • Genel Bakış

    Projeyi AndroidStudio'da çalıştırın ve profili alt sekmede bulabilirsiniz.Açtıktan sonra, o anda çalışan uygulamanın bilgileri varsayılan olarak görüntülenecektir. Bağlı cihazı ve hata ayıklanabilecek diğer uygulama işlemlerini seçmek için Profil sayfasının sağ üst kısmındaki artı işaretine tıklayabilirsiniz.

    Şekilde de görülebileceği gibi Profil, seçilen uygulamanın CPU, bellek, ağ ve güç kullanımını izleyebilir ve dalga formu grafikleri, çubuk grafikler ve çizgi grafikler aracılığıyla gerçek zamanlı olarak görüntüleyebilir.

    Mevcut uygulamanın izlenmesini sonlandırmak veya izleme oturumunu silmek üzere bir seçenek kutusu açmak için sol üst köşedeki kırmızı kareye tıklayın veya izlenen oturumda sağ tıklayın.

    En üstteki araç çubuğu:

  • İzlenmesi gereken süreçleri ekleyin.
  • Mevcut izleme oturumunu sonlandırın.
  • Kenar çubuğunu gösterin / gizleyin.
  • İzleme görünümünü küçültün.
  • İzleme görünümünü büyütün.
  • İzleme görünümünü sıfırlayın.
  • Toplama aralığını görüntüleyin.
  • CPU analizi

    Genel bakış diyagramında, CPU kullanım analizi sayfasına girmek için CPU modülüne tıklayın.

    Şekildeki üç menü şunlardır:

  • Hafıza, ağ, güç izlemeye geçebilir.
  • Farklı izleme hedefleri arasında geçiş yapın. Bunlar Örneklenmiş Java, Enstrümanlı Java, Örneklenmiş Java ve Sistem İzleme'dir.
  • Kayıt düğmesi, CPU kullanım bilgilerini toplamaya başlamak için tıklayın.
  • CPU kullanım verilerini toplamaya başlamak için Kaydet düğmesine tıklayın ve veri toplamayı durdurmak için Durdur düğmesine tıklayın. Çekim tamamlandıktan sonraki görüntü şekilde gösterilmiştir,

    Şekildeki koyu kısım toplama aralığını temsil eder.İzleme görünümünde yakınlaştırabilir, ardından kayıt aralığını azaltabilir ve iş parçacığında uygulanan yöntemi ayrıntılı olarak görmek için bir ileti dizisi seçebilirsiniz.

    Profil, yürütme yöntemini görüntülemenin dört yolunu destekler.

  • Çağrı Tablosu: Yürütme sırasına göre görüntülenir, yukarıdaki şekle bakın.
  • Alev Tablosu: Alev grafiği aracılığıyla görüntüleyin.
  • Yukarıdan Aşağı: Ekranı yukarıdan aşağıya doğru arayın.
  • Aşağıdan Yukarı: Aşağıdan yukarıya arayın ve görüntüleyin.
  • CPU kullanımı görünümünü analiz ederek, aşağıdaki sorunlar kabaca tespit edilebilir.

  • Beş veya altı dakikalık CPU kullanım bilgilerini toplayın, görünümü minimuma yaklaştırın ve küresel olarak izleme sürecinde CPU kullanımını gözlemleyin.
  • Profil aynı anda kullanıcı dokunma olaylarını ve sayfa atlamalarını ve diğer olayları kaydedecektir. Problem kodunu bulmak için CPU'nun anlık kullanımını karşılaştırın.
  • Bu süre içinde her iş parçacığındaki yöntemin yürütülmesini analiz etmeye odaklanarak bir süreyi kaydetmeyi seçin.
  • Yukarıdaki şekil, ImageLoader tarafından görüntüleri yüklemek için kullanılan CPU kaynaklarını gösterir. Çıkarılabilecek sonuç, ImageLoader ile ilgili kodun tekrar tekrar çalıştırılmasıdır ki bu da başlı başına anormal bir durumdur.

    Makroskopik analiz, CPU kullanımının osilogramını gözlemler ve CPU kullanımının periyodik zirveleri olduğunu bulur.

    Ekte, en yüksek CPU kullanımını ortadan kaldıran optimize edilmiş CPU kullanımı dalga şekli diyagramı yer almaktadır.

    Zirvenin nedeni, özellikle koda aşina değilseniz, izleme iş parçacığının yöntem çağrısına dayalı olarak sorunu bulmanın kolay olmamasıdır. Sorunu bulmak için genellikle bellek kullanımı ile ağ kullanımı kapsamlı analizini birleştirmek gerekir.

    Bellek analizi

    Hafıza analizi sayfasına geçin.

    Şekildeki üç menü şunlardır:

  • CPU, ağ, güç izlemeye geçebilir.
  • Belleği serbest bırakmak için GC'yi manuel olarak yürütün.
  • Döküm belleği kullanım verileri metin verilerine kaydedilebilir.
  • Bellek kullanımı ayrıca makro ve mikro açıdan da analiz edilebilir. Profil, farklı veri türleri tarafından kullanılan belleği belirtmek için farklı renkler kullanır. Var: Java, Yerli, Grafik, Yığın, Kod, Diğerleri.

    Şekilde gösterildiği gibi, sistem bellek kaynaklarını serbest bırakana kadar bellek büyümeye devam eder, bu nedenle makroskopik bellek dalga biçimi grafiği pürüzlüdür. Ve Yerli uzay tarafından işgal edilen ana hafızanın artmaya devam ettiği görülebilir.

    Mikro bir bakış açısıyla, görüntüleme aralığını yakınlaştırın, kaydı başlatmak için döküm düğmesine tıklayın, analiz aralığını seçin ve bellekteki çeşitli veri türlerinin kapladığı alanı görüntüleyin.

  • İki tür bellek ayırma arasında ayrım yapın. Canlı Tahsis ve Yığın Dökümü.
  • Dört yığının bellek tahsisini görüntüleme desteği. görüntü yığını, zigot yığını, uygulama yığını, JNI yığını.
  • Üç tür örnek görünümü sıralamayı destekler: Sınıfa göre düzenle, Pakete göre düzenle, Çağrı yığınına göre düzenle.
  • Şekil, optimize edilmiş bellek izleme diyagramıdır ve bellek kullanımı dengelenmiştir.

    Ağ analizi

    Ağ analiz aracı nispeten basittir Şekildeki çizgi grafiğindeki tepe noktası bir ağ bağlantısını temsil eder.

    Bir ağ bağlantısı seçerek, bağlantı isteği adresini ve gönderilen ve alınan verileri görüntüleyebilirsiniz.

    Son olarak, optimize edilmiş ağ izleme eklenmiştir.

    Güç tüketimi izleme

    Güç tüketimi izleme genellikle herhangi bir sorun tespit etmez ve genellikle yalnızca uygulamanın güç tüketimini ölçmek için kullanılır. Anormal güç tüketimi olan uygulamalarla karşılaşıldığında, CPU, bellek ve ağ izlemede sorunlar bulunabilir. Örneğin, ağ bağlantı işleminin veri göndermek ve almak için ağ kartı modülünü kullanması, itme işlevinin sürdürmesi gereken uzun bağlantı, GC belleği ve konumlandırma işlevinin tümü güç desteğine ihtiyaç duyar. Şekilde optimizasyon öncesi ve sonrası karşılaştırması ektedir Işık temelindeki güç kullanımının çubuk grafiğine dikkat edin. Uygulama güç tüketimi sorunu önemli ölçüde iyileştirildi.

    sonuç olarak

    Yukarıdakiler, bellek analiz aracının dört modülünün basit kullanımına sadece kısa bir giriş niteliğindedir. Belki okuyucu optimizasyon öncesi ve sonrası karşılaştırmadan habersizdir. Aşağıda, yazarın test etmek istediği uygulamadaki sorunların açıklaması bulunmaktadır.

    Uygulama detayları:

  • Resim karusel modülü test uygulamasında kullanılır ve her 2 ~ 3 saniyede bir resim görüntülenir.
  • Resimleri yüklemek için ImageLoader'ı kullanın.
  • Normal koşullar altında, ImageLoader üç seviyeli önbelleği destekler.LRU algoritmasına göre, karusel resimleri bellekte saklanmalı ve yeniden kullanılmalıdır. Ağ bağlantılarının ve belleğin sürekli büyümesini başlatmayacaktır.

    Soru detayları:

  • Karuselde biri boş iki resim var. Bu nedenle, ImageLoader bu görüntüyü her seferinde indirmek için bir ağ bağlantısı başlatmaya çalışacaktır.
  • ImageLoader başlatıldığında, bellek önbelleğini devre dışı bırakan bir yapılandırma kullanır ve genel bellek önbellek alanı yalnızca 2M'dir. Daha sonra, yapılandırılmış resmin belleğe yüklenmesi için 3M alana ihtiyacı vardır ve bu da bellek önbelleğini geçersiz kılar.
  • Özetle, Test edilen uygulama her zaman ağ isteklerini başlatır ve bellek kaynağı kullanımındaki sürekli artış sistem GC'sine yol açar. Dolaylı olarak uygulamanın güç tüketmesine neden oldu. İlgilenen çocuk ayakkabıları, en yüksek güç tüketimi, ağ bağlantısı, bellek GC ve en yüksek CPU kullanımı arasındaki ilişkiyi doğrulayabilir. Dördü arasındaki ilişki çok hassas.

    [Ekli] İlgili çerçeve ve bilgiler

    Bilgi koleksiyonu

    Takip edin + özel mesajı ücretsiz olarak "Android bilgileri" yanıtlayın!

    Önceki Android gelişmiş mimari malzemelerine, kaynak koduna, notlarına ve videolarına erişim sağlayın. Gelişmiş kullanıcı arayüzü, performans optimizasyonu, mimar kursları, NDK, hibrit geliştirme (ReactNative + Weex) WeChat uygulamaları, Flutter'ın çok yönlü Android gelişmiş uygulama teknolojisi ve grupta sorunları birlikte tartışmak ve çözmek için teknik uzmanlar var.

    Model oyun kontrolü: RG Sazabi
    önceki
    İnsan yüzüyle bir saat yap, çok büyülü görünüyor
    Sonraki
    Sıradan bir oyuncunun hatıraları DOTA ve TI hakkında
    Model oyun kontrolü: ağır tadı eski, fırtına yukarı
    "Game of Thrones" un gerçek tarihi olay örgüsünden daha acımasızdır.
    Nanhu Park'ta kırmızı erik çiçekleri, vatandaşlar baharın güzel zamanlarının tadını çıkarıyor
    Baba Zhang Yimounun kutsaması, Huo Jianhua ve Ni Ninin desteği, 80ler sonrası yönetmenin bu ilk filmi geliyor
    Vay be, zengin kokuyorsun
    Google, Graph Learning platformunu piyasaya sürdü. Bu, finansal dolandırıcılıkla mücadele tanımlamasında nasıl bir rol oynuyor?
    Oyun Kontrolü: Biraz eski Gundam Kyrios Lord Angel
    Model oyun kontrolü: yarı mekanik, yarı iskelet Zaku hazırlık sahnesi
    Japon çizgi roman filmi "Deadpool" u kaybetmez, Takuya Kimura'nın şekil bozukluğunun ilk iki gününü kabul eder ve Shun Oguri istismar edilir
    "Ultraman Mobile" ın konusu daha tutarlı ve daha çok dikkatle cilalanmış bir gerilim draması gibi
    Serbest stil ne kadar önemli?
    To Top