Jeśli używam metody addEventListener do zarejestrowania zdarzenia na elemencie, a następnie usuń element bez usuwania zdarzenia i robię to wielokrotnie, czy mogę utworzyć wyciek pamięci?javascript addEventListener - problem z wyciekami pamięci:
Odpowiedz
Nie powinien przeciekać. Jedna przeglądarka, która jest niesławna z powodu wycieku jak cholera, gdy funkcja obsługi zdarzeń powoduje obiekt-obiekt <> Obiektu obiektów JS jest IE (do wersji 7), a IE (do wersji 8) nie obsługuje addEventListener
.
Zostaw to działanie i zobacz, jak długo wpływa na wykorzystanie pamięci w przeglądarce, jeśli chcesz przetestować je w konkretnej przeglądarce.
<div id="x"></div>
<script type="text/javascript">
function replace() {
var x= document.getElementById('x');
if (x.firstChild!==null)
x.removeChild(x.firstChild);
var el= document.createElement('p');
el.addEventListener('click', click, false);
x.appendChild(el);
}
function click() {
alert('click');
};
setInterval(replace, 1);
</script>
(Aby przetestować go z obecnej pętli odniesienia, przesuń definicję function click
się do organizmu replace
.)
Dostaniesz przeciek pamięci, jeśli usunąć z DOM, elementy, które zostały przyłączone słuchaczy. Ale to występuje tylko w IE, Fx i inni mają zaawansowaną GC.
Często zdarza się, jeśli manipulować elementami DOM nie przez DOM, ale jak
el.innerHTML = ...
Na przykład, YUI ma niestandardową realizację setInnerHTML, aby uniemożliwić wyciek pamięci w tym przypadku.
- 1. Jak rozwiązywać problemy z wyciekami pamięci w aplikacjach Windows Store?
- 2. JavaScript: onchange lub addEventListener?
- 3. Brak pamięci Problem z wyciekiem pamięci
- 4. Sposób korzystania z addEventListener
- 5. jQuery równoważne metody addEventListener Javascript w
- 6. onClick priorytet nad addEventListener w javascript?
- 7. Obiekty JavaScript: 'addEventListener nie jest funkcją'
- 8. addEventListener i zakres tego
- 9. JavaScript: addEventListener z onkeydown nie wydaje się działać
- 10. C++ problem alokacji pamięci
- 11. Nie można przekazać zdarzenia do addEventListener: problem zamknięcia
- 12. Problem z JavaScript zmienny zakres
- 13. Problem z metodą getDay() javascript
- 14. Problem z JavaScript dla pętli
- 15. Problem z wyciekiem pamięci w aplikacji Backbonejs
- 16. Problem pamięci podręcznej nhibernate z zapytaniami linq
- 17. Problem z wyciekiem pamięci skryptowej PHP
- 18. addEventListener nie pracuje z onbeforeunload
- 19. Jak zaktualizować program addEventListener?
- 20. addEventListener w tagu Canvas
- 21. Wymuszenie wygaśnięcia pamięci podręcznej z pliku JavaScript
- 22. JavaScript addEventListener - za pomocą, aby utworzyć efekt mouseover?
- 23. JavaScript indeksowanie pętla problem
- 24. Filtr JavaScript vs problem z mapą
- 25. Problem z porównaniem ciągów w JavaScript
- 26. Problem z nawigacją w wtyczce javascript sammyJS?
- 27. Duży problem z zestawem danych EPPlus z wyjątkiem braku pamięci
- 28. Problem z wyciekiem pamięci. Śledzenie oczu w Unity z OpenCVSharp
- 29. Problem z roundcube: połączenie z serwerem pamięci nie powiodło się
- 30. addEventListener w jQuery