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:
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:
Genel bakış diyagramında, CPU kullanım analizi sayfasına girmek için CPU modülüne tıklayın.
Şekildeki üç menü şunlardır:
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.
CPU kullanımı görünümünü analiz ederek, aşağıdaki sorunlar kabaca tespit edilebilir.
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.
Hafıza analizi sayfasına geçin.
Şekildeki üç menü şunlardır:
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.
Şekil, optimize edilmiş bellek izleme diyagramıdır ve bellek kullanımı dengelenmiştir.
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 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.
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ı:
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ı:
Ö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.