SORU
11 Mart 2012, Pazar


Bulma ve büyük yığın boyutu nedeni giderilmesi

Benim uygulama çok fazla bellek kullanıyor neden çalışmak için çalışıyorum. Ben genellikle 15 ve beklerdim daha yüksek olan 18MB arasında kullanma. DDMS) yığın boyutu baktım ve bunu gördüm:

enter image description here

Bu benim app büyük görüntüleri ile uğraşmaz çünkü biraz suspicous baktı. Aslında benim app drawables toplamının yaklaşık 250KB. Bir yığın dökümü yarattım ve MAT tüm bu hafıza nereye gittiğini bulmak için kullanılır. byte[] dizi aşağı delinmiş ve aşağıdaki fark bu kadar açık farkla en büyük tüketici edildi:

enter image description here

Kesinlikle sPreloadedDrawables böyle bir yüksek yığın boyutu muhafaza sorumludur neden hiçbir fikrim yok. Ben de kök nedenini belirlemek için nasıl, ya da nasıl hiçbir fikrim var 'düzeltme'.

Buradan nereye gideyim? Benim app data ile hiç anlaşma yok Olan Hizmetler aracılığıyla çoğunlukla arka planda çalışır. Kullanıcı kullanmak için seçebilirsiniz Faaliyetleri var, fakat yine de, bu kadar büyük bir yığın boyutunu açıkla-küçük drawables kullanıyorlar. Ben de kötü oluşumları Faaliyet sızıntılar için kontrol ettim, ama herhangi bir bulun yoktu.

Herhangi bir fikir?

EDİT: yığın boyutu emülatörü çalıştırdığınızda. büyük ölçüde daha düşük olduğunu fark ettim Bu oldukça kafa karıştırıcı. :/

CEVAP
4 NİSAN 2012, ÇARŞAMBA


Sistem varsayılan sistem kaynakları, bu uygulama kaynakları, onay kutuları için standart Drawables gibi şeyler ve radyo düğmeleri bağımsız olarak önyükleme olacak. 10.5 MB ama varsayılan sistem kaynaklarının bir yeri vardır ve Görüntüleri hafızada saklanan bir kez daha büyük görünüyor. Ayarlar yeni bir şey değil, ama önceden boyutunu ICS daha büyük olabilir. Ekran yoğunluğu muhtemelen bu rol ile birlikte daha fazla sistem Drawables ICS önceden eklenmesi sadece oynar.

Şu anda hafıza sPreloadedDrawables tarafından düzenlenen azaltmak için bir yol var

Uygulama süreci sistem Drawables en çok kullanılan uygulamalar (özellikle oyunlar) kökenli sonra bunu temizlemek için bir yolu yoktur, bu talihsiz bir durumdur. Önyükleme kaynaklarının büyük boyutta belirli bir sürümü (veya ahize bağlantı noktası) ICS ile ilgili bir hata gibi görünüyor olsa da bu durumda. Hiç böyle bir mekanizma ön bellek kullanımını azaltmak için gerekli olacağını sanmam aksi takdirde normal bellek küçük bir miktar.

Eğer bu önbellek sonucunda bellek yetersiz çalıştırıyorsanız, o zaman muhtemelen bir hata raporu Google dosya ederim.

Eğer daha fazla iç detayları ile ilgilenen varsa kaynak önyükleme işlemi burada iz. ZygoteInit.preloadResources

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • Fubar Protocol

    Fubar Protoc

    21 AĞUSTOS 2010
  • Ownage Pranks

    Ownage Prank

    13 AĞUSTOS 2007