Bit eşlemler genellikle bir uygulamadaki en fazla bellek tüketen nesnelerdir. Kod çözme ve ölçeklendirme işlemleri, kare oluşturma için genellikle kritik yoldadır. Bit eşlem bellek kullanımını optimize etmek, duraklamaları, ANR'leri ve OOM ile ilgili işlem sonlandırmalarını azaltarak kullanıcı arayüzü yanıt verme hızında, pil ömründe ve genel kararlılıkta önemli iyileştirmeler sağlar.
Yüksek bit eşlem bellek kullanımına katkıda bulunanlar
Hiç kullanılmamış sanal bellek de hesaplamaya dahil edilebilir. Beklenmedik şekilde yüksek bit eşlem bellek kullanımı görüyorsanız kullanılmayan bellek ayırmadığınızı doğrulayın.
Kaynaklar
Android Studio'da bit eşlemleri analiz etme
Bit eşlemler için Android Studio profil oluşturma
Bellek ayırmalarını anlık olarak incelemek, yığın dökümlerini yakalamak ve bellek sızıntıları için nesneleri analiz etmek üzere Memory Profiler'ı kullanın. Ayrıca, bellek sızıntılarını tespit etmek, yinelenen bit eşlem ayırmalarını belirlemek ve nesne tutmayı görselleştirmek için yığın analizcisini kullanın.
LeakCanary ile otomatik bellek sızıntısı tespiti
Uygulamanızdaki bellek sızıntılarının algılanmasını otomatikleştirmek için LeakCanary kitaplığını entegre edin. LeakCanary, otomatik yığın analizi sağlar. Bu analizde, çöp toplama işlemi yapılması gerekirken bellekte tutulmaya devam eden nesneler (ör. yok edilen bileşenler tarafından tutulan bit eşlemler) tanımlanır.
Bit Eşlem Performansı Belgeleri
Bu kaynaklar, farklı Android bileşenlerinde verimli bitmap işleme için en iyi uygulamalar konusunda kapsamlı rehberlik sağlar.
Bit eşlem bellek kullanımını optimize etme için geliştirici yapılacaklar listesi
Bit eşlem bellek verimliliğini optimize etmek için üç temel ilkeyi uygulayın: azaltma, yeniden kullanma ve geri dönüştürme.
- Azaltma: Bit eşlemler yüklenirken veya görüntülenirken ilk bellek kullanımını en aza indirin.
- Yeniden kullanma: Gereksiz bit eşlem ayırmalarını önlemek için önbelleğe alma mekanizmalarını uygulayın.
- Geri dönüştürme: Etkin işlemler için belleğin yeniden ayrılmasına izin vermek üzere kaynakları proaktif olarak serbest bırakın.
Aşağıdaki geliştirici yapılacaklar listesi, bit eşlem bellek kullanımını optimize etmenize yardımcı olabilir.
| Temel İlke | Alan | Açıklama |
|---|---|---|
| Azalt | Yinelenen Bit Eşlemleri Kaldırma | Yedekli bit eşlem ayırmalarını tespit etmek için Memory Profiler'ı kullanarak yığın dökümlerini analiz edin. Bit eşlem belleğini yönetme kılavuzuna bakın. |
| Resim yükleme kitaplıklarından yararlanma | İş parçacığı oluşturma, önbelleğe alma ve verimli kod çözme işlemlerini otomatikleştirmek için Glide ve Coil gibi kitaplıkları kullanın. | |
| Alt örneklemeyi uygulama | Tam çözünürlüklü öğeleri yüklemek yerine hedef kullanıcı arayüzü kapsayıcı boyutlarıyla eşleşecek şekilde resimlerin kodunu çözün. | |
| Opak görüntüler için RGB_565 kullanma | Saydamlığı olmayan resimler için ARGB_8888 yerine 16 bit yapılandırmaya geçerek bellekte kaplanan yeri% 50 azaltın. |
|
| Prioritize VectorDrawables | Simgeler ve temel grafikler için vektörler kullanarak minimum bellek yüküyle keskin ölçeklendirme sağlayın. | |
| Sunucu tarafı resim yayınlamayı optimize etme | Arka uç API'lerini, cihaz yoğunluğuna göre uyarlanmış resimler ve kullanıcı arayüzü kapsayıcı boyutları sunacak şekilde yapılandırın. | |
| Şeffaf kenar boşluklarını ortadan kaldırma | Yerleşik kenar boşlukları yerine InsetDrawable veya düzen kenar boşluğu kullanarak "görünmez" pikseller için bellek ayırmaktan kaçının. Bellek açısından verimli Android uygulamaları geliştirme başlıklı makaleyi inceleyin. | |
| Yeniden kullanma | En Uygun Önbellek Boyutlarını Yapılandırma | Bellek ve disk önbelleği sınırlarını cihazın RAM'ine ve ekran çözünürlüğüne göre ayarlayın. Bit eşlemleri önbelleğe alma başlıklı makaleyi inceleyin. |
| Geri dönüşüm | Kaynakları Arka Planda Temizleme | Sistem belleği baskısı sırasında önbellekleri temizlemek ve sürecin devamlılığını iyileştirmek için TRIM_MEMORY_BACKGROUND'yi uygulayın. |
| Kullanıcı arayüzü gizliyken yayın öncesi içerikleri yayınlama | Uygulama artık kullanıcı tarafından görünmüyorsa TRIM_MEMORY_UI_HIDDEN kullanarak bit eşlem önbelleklerini serbest bırakın. |
|
| Bellek Sızıntılarını İzleme | LifecycleOwner'ı yok edildikten sonra tutulan bit eşlemleri bulmak için LeakCanary ve Memory Profiler'ı kullanın. Uygulamanızın belleğini yönetme başlıklı makaleyi inceleyin. |