2016-06-30 16 views
8

Android Bellek Monitörü'nü, özellikle de "Dump Java Heap" özelliğini kullanarak, şu anda uygulamamdaki bellek sızıntılarını buluyorum. Android Studio'nun dökümü/HPROF görünümünün sol tarafında, "Analiz Görevleri" ni açmak için bir seçenek var ve orada makineyi "Sızan Faaliyetleri Algıla" ve "Yinelenen Dizeleri Bul" olarak anlatabilirsiniz. İkinci seçenek tarafından şaşırdım. Ne yapar ve nasıl yararlıdır? Aynı diziyi kaynak klasörüne iki kez koyan becerikli geliştiricilere yardım etmekten daha karmaşık olmalı. docs burada (aramalarım yeterince iyiyse) çok yararlı değildir, çünkü "hedef programın değerleri tekrarlayan dizeleri olduğu durumlarda" yardımcı olduğunu belirtir. Bu ne zaman olacak?Neden HPROF Görüntüleyici ve Çözümleyici ile "Çoğaltılmış Dizeleri" bulmak istiyorum?

cevap

3

Bildiğim kadarıyla, bu bellekte çoğaltılmış dizeleri işaret eder. Ancak, bu, aynı dizenin birden fazla kaynağa girildiği durumları bulmaktan daha fazlası için yararlıdır. Örneğin, Java'da Strings are immutable olarak, başlangıçta fark edebileceğinizden çok daha fazla dizeyle kolayca sonlanabilir. Uygulamanız çok sayıda birleştirilmiş birleştirme kodu içeriyorsa ancak StringBuilder'ı kullanmıyorsanız veya uygulamanız herhangi bir dize/metin işleme gerçekleştiriyorsa, dizeleri tarafından alınan beklenmedik büyük miktarda alanla sonuçlanması oldukça kolaydır. Ancak, tersine, bir miktar alan kazanmak için (genellikle sorunun ne olduğunu anlayabildiğinizde) nispeten kolay bir optimizasyon olabilir. Yani bu görevin bir sızıntı bulmak yerine bellek 'optimizasyonu' hakkında olduğunu söyleyebilirdiniz.