2013-11-02 63 views
9

Karma bir modda kapsamlı bir iOS uygulamasına sahibiz - bir UIWebView, JS uygulamasında web uygulamasının büyük bölümünü elinde tutuyor. IOS6'da iyi çalışıyor ancak son zamanlarda tüm iOS7 cihazlarında bellek kazasında ciddi bir sorun yaşadık - iPad, iPhone 4/4S ve iPhone 5/5C/5S. IOS simülatöründe hem iOS6 hem de 7'de bellek tüketiminin analizini yaptık. Uygulamada aynı etkileşimi yaparak, iOS7'de 800MB'u aşabilirken WebView'ün bellek tüketimi her zaman iOS6'da 200MB'den azdır!

WebView'de iOS7'de ciddi bir bellek yönetimi sorunu olduğunu tahmin ediyoruz. Ancak JS'yi WebView içinde profillemek için kullanılan aracın eksikliği, kök nedenini bulamıyoruz. Burada, benzer sorunların olup olmadığını sormak isteriz ve herhangi bir araç/yaklaşım, UIWebView'ın tam olarak sorunu çözmek için daha fazla bilgi edinmesine yardımcı olabilir. Teşekkürler.iOS7 UIWebView Bellek sızıntısı

+1

Bu, http://stackoverflow.com/questions/19150961/ios7-webkit-crashes-frequently-not-freeing-up-memory –

cevap

0

Hem UIWebView hem de iOS7 ile yerel safari tarayıcısı, json nesnesini ele alırken bellek yönetiminde sorun yaşar gibi görünüyor. Derin bir iç içe yapıya sahip bir sözlüğünüz varsa ve sayısal bir dize olan anahtardan birine sahipseniz ve 99999'dan küçükse, sık sık bellek uyarıları almış olabilirsiniz.

{"**98304**": 
    {"key": 
     {"2ndLevelKey": 
      { 
       "address":"10928 Homestead rd","city":"Cupertino","Zip":95014 
      } 
     } 
    } 
} 

eser etrafında basittir

şey gibi, anahtar "ID98304" gibi "" değiştirebilsennasıl deneyin. Sorunu zaten çözdüğünüzü umuyorum. :)

+0

ile ilişkili gibi görünüyor. Bu sorun giderildiğinde? – wawanopoulos

+0

bug 15476175, 14 Kasım tarihinde Apple'a gönderilmiş, şu ana kadar durum güncellemesi yok. –

1

Tavsiye veya yorum yazmak için yeterli bir itibarım yok. Bu yüzden bir "cevap" ın katkıda bulunabileceğim tek yol olduğunu düşünüyorum.

Ming Zhu'nun katkısına katılıyorum. 5 basamaklı anahtarınız varsa (9999 < anahtar numarası < = 99999), iOS 7'de bellek kullanımı patlar.

Uygulamamı kilitleyen şeyi çoğaltmaya çalışırken geldiğim örnek kod aşağıdadır.

tempobj = {}; 

for(var i=1; i<2000; i++){ 
    var temp = {}; 
    tempobj[i] = temp; 
    temp[98304] = "hello world"; 
} 

Ben de bu stackoverflow bulmadan elma bir hata bildiriminde, ama bu zaten iyi bir şeydir benziyor etmedi.