Google Chrome Dev Araçları ile hafıza sızıntıları Uygulamamı ayıklama edildi. jQuery'nin AJAX bellek yanıtı sızıntısı mı? Öbek Fotoğraf ve garip bir şey fark ettik:
JSON büyük bir blog getirmesi ve görünüşe ham Tepki Metin benim app bellek sızıntısı neden bellekte etrafında taşıyorsa bir AJAX istekte bulundu. Ben vanilya JS aynı denemeyi yaparsanızBu çok büyük bir bellek $ .ajax yılında sızıntı var ki bana pek mümkün görünüyordu, ama bu durumun nedenine bir açıklama için umuyordum ... kaçak değil gösterilen.
1) Saf JavaScript XHR
- kaynak: http://jsfiddle.net/HZmT5/2/ (kullanarak
XMLHttpRequest
) - çıkışı: Yok Kaçak $ .GetJSON kullanma
2) gösterilen http://fiddle.jshell.net/HZmT5/2/show/light/
- kaynağı http://jsfiddle.net/JmA8v/1/ (kullanarak
$.getJSON
) - çıkışı: http://fiddle.jshell.net/JmA8v/1/show/light/ (kaçak gösterilmektedir)
- Sızıntı gösterilen ekran görüntüsüne:
ekran görüntüsü: XHR isteğe tüm HTTP yanıt etrafında sıkışmış bellek. "Anlık görüntü 1", düğmeye basılmadan önce. "Anlık görüntü 2" sonra. Aşağıdaki ekran görüntüsüne dikkat edin ve Yığın öncesi/sonrası Karşılaştırması.
aynı davranış
saf-JS sürümünde yeniden üretilmedi.
'$ .getJSON' ifadesinin bir söz vermesiyle ilgili olabilir. –
@JulianAubourg Bunu önlemek için bir geçici çözüm var mı? JQuery hatası mı yoksa beklenen davranış mı? – philfreo
Peki, tüm ajax yardımcılarının bir söz vermesi beklenen davranışlardır (ve böylece JSON, sözün ömrü boyunca bellekte tutulur). Gereksiz bellek tutulmasını önlemek için XHR nesnesini devre dışı bırakmaya özen gösterdik. Garip olan şu ki, söz konusu davada çöp toplayıcı tarafından iadesi yapılmıyor. –