16

Artık iOS'ta yaşıyorum, ancak soru Android için de geçerlidir. Xcode'taki bellek grafiğine bakıyorum ve uygulama 240MB'lık bir isabet ettiğinde çöküyor, iOS'un onu öldürdüğüne inanıyorum çünkü çok fazla bellek alıyor.Cordova'da bellek kullanımını nasıl kontrol edebilirsiniz?

Uygulamadaki sayfalar arasında gezinerek sürekli olarak çökmesine neden olabilirim. (Bu, bir SPA, istemci tarafı HTML render.) Bir dakika boyunca gezinmeyi kesersem, bellek 140MB'a iner.

Bu durumda

enter image description here

, navigasyon durdurması sonrasında, bellek üzerinde kendi düşmezse:

İşte OSX Chrome'da aynı sayfası. Bunun yerine, grafiğin ucundaki uçurum, çöp toplama düğmesine bastığımda (170MB'dan 60MB'ye düşürüyor).

Uygulamamın çökmesini nasıl engellerim?

  1. Cordova'da arayabileceğim çöp toplama düğmesinin karşılığı var mı?
  2. Uygulamamı özel bir geniş bellek ödeneği vermek için iOS'u alabilir miyim?
  3. Kullanıcı, bir dakikalık süre içinde X kez arasında gezinirse, bir sonraki dakika için uygulamayı kullanamayacaklarını söyleyen bir zaman aşımı ekranı koyarken, çöp toplama işlemi devam ederken XD
  4. Herhangi bir şekilde JS HTML oluştururken, yamaçtaki bellek kullanımını azaltın mı?

Ayrıca, burada HTML düğümleri içeren Chrome grafiği - orantılı olarak büyür ancak düğümler çöp toplama işleminden sonra aynı seviyede kalır.

enter image description here

+0

Bunu iOS'ta, özellikle sızıntılarda mı izlediniz? Bellek açıldıktan sonra iOS için uygulamaların bırakıldığını düşündüğünüzde çok fazla bellek gibi görünüyor. Ve 'yerli' uygulamalar için bile size fazladan bellek ayırmak için iOS almanın hiçbir yolunu bilmiyorum. – YvesLeBorg

+0

Yanılıyorsam düzeltin, ama UIWebView'de her şey gerçekleştiğinden beri, devoidlerde profil oluşturma iOS profilinin yakalayacağıyla aynı şeyleri yakalamalı mı? Ve çöp toplamadan sonra yığın taban çizgisine indiğinden, bu sızıntı olmadığı anlamına mı geliyor? – Loren

+1

duh, kötüyüm. Yerel iOS koduna baktım ve garip bir şey buldum. Github ile ilgili bir soru göndermek cevap ile geri dönecek. Eklentiyi Android için de – YvesLeBorg

cevap

4

Sen Cordova uygulamaları için bazen iOS bellek kullanımını azaltabilir WKWebView eklentisini kullanarak deneyebilirsiniz.

+0

Çok iyi çalıştığını duyduğuma sevindim! Bu harika bir gelişme. – Reubend

+0

Aslında WKWebView belleğinin XCode bellek çizelgesine dahil edilmemesi gerektiğini düşünüyorum, çünkü hala bellek uyarıları alıyorum ve çöküyor. Yine de daha az düşünüyorum. [1] https://github.com/practicalmeteor/meteor-wkwebview/issues/1#issuecomment-130521832 – Loren

+0

@Reubend Android için böyle bir şey var mı? – VaTo

İlgili konular