Aktualizacja 2015
W 2012 roku nie było to możliwe, jeśli chciałeś obsługiwać wszystkie główne używane przeglądarki. Niestety, w tej chwili jest to nadal funkcja dostępna tylko w przeglądarce Chrome (niestandardowe rozszerzenie window.performance
).
window.performance.memory
Obsługa przeglądarek: Chrome 6+
Odpowiedź z 2012 roku
Czy istnieje sposób, aby dowiedzieć się, ile pamięci zajmuje strona internetowa lub moja aplikacja jquery? Szukam rozwiązania uruchomieniowego (nie tylko narzędzi programistycznych), aby moja aplikacja mogła określać działania na podstawie wykorzystania pamięci w przeglądarce użytkownika.
Prosta, ale poprawna odpowiedź brzmi: nie . Nie wszystkie przeglądarki udostępniają Ci takie dane. I myślę, że powinieneś porzucić ten pomysł tylko z powodu złożoności i niedokładności a „wykonanego ręcznie” może wprowadzić więcej problemów niż je rozwiązać.
Zliczanie elementów DOM lub rozmiaru dokumentu może być dobrym oszacowaniem, ale może być dość niedokładne, ponieważ nie zawierałoby powiązania zdarzeń, danych (), wtyczek i innych struktur danych w pamięci.
Jeśli naprawdę chcesz trzymać się swojego pomysłu, powinieneś oddzielić stałą i dynamiczną zawartość.
Naprawiona treść nie jest zależna od działań użytkownika (pamięć używana przez pliki skryptów, wtyczki itp.)
Wszystko inne jest uważane za dynamiczne i powinno być głównym celem podczas określania limitu.
Nie ma jednak łatwego sposobu ich podsumowania. Możesz zaimplementować śledzenie system , który zbiera wszystkie te informacje. Wszystkie operacje powinny wywoływać odpowiednie metody śledzenia. na przykład:
Zawijaj lub nadpisz jQuery.data
metodę informowania o śledzeniu systemu o alokacji danych.
Zawijaj manipulacje HTML, aby śledzić również dodawanie lub usuwanie treści ( innerHTML.length
jest to najlepsze oszacowanie).
Jeśli przechowujesz duże obiekty w pamięci, powinny one również być monitorowane.
Jeśli chodzi o wiązanie zdarzeń, należy użyć delegowania zdarzeń, a wtedy można to również uznać za nieco ustalony czynnik.
Innym aspektem, który utrudnia prawidłowe oszacowanie wymagań dotyczących pamięci, jest to, że różne przeglądarki mogą alokować pamięć w różny sposób (dla obiektów JavaScript i elementów DOM).