Rozwijam grę dla systemu Android przy użyciu szkieletu JS. Chcę mieć pewność, że niektóre z obiektów zostaną zebrane podczas używania ich. Jak mogę to zmusić? Czy powinienem używać wartości null lub undefined?Jeśli chcesz wymusić usuwanie śmieci na zmiennej w JavaScript, czy lepiej ustawić ją jako null lub undefined?
Odpowiedz
Nie można wymusić czyszczenia pamięci (nie w żaden rozsądny sposób).
Jeśli zmienne nie wychodzą automatycznie poza zakres, ustaw je na null
.
Co w szalonym stylu, jestem tutaj zdesperowany. –
@EricWooley Szalona moda miałaby rozpocząć przydzielanie tony pamięci, wyzwalając GC, ale wspomniany przydział sprawiłby, że byłoby to bezcelowe. – alex
Niekoniecznie występuje błąd chrome, który uniemożliwia użycie ponad 500 MB danych blob, https://code.google.com/p/chromium/issues/detail?id=375297 Potrzebuję napisać blob 500mb, wyzwolić gc, aby wyczyścić blob, który właśnie napisałem, załadować kolejne 500 MB danych typu blob i napisać to. Myślę, że chrome obsługuje dane gc z danych blobowych inaczej, więc to może nie pomóc, ale może być warte strzału. –
Najlepszą radą jest zdefiniowanie ich w zakresie, który powoduje, że kwalifikują się do usuwania śmieci. Oznacza to, że nie należy używać zmiennych globalnych, które nigdy nie kwalifikują się do gromadzenia. Zamiast tego zadeklaruj ich jako mieszkańców.
Można ustawić wartość null, a jeśli jest to ostatnie odwołanie do tego obiektu, stanie się ono kwalifikujące do usuwania śmieci.
http://coding.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-javascript/
sugestia TGH jest najlepszym choć, polecam to.
- 1. Czy usunąć prywatną kolekcję lub ustawić ją na wartość null?
- 2. ustawić tło jako NULL
- 3. JavaScript undefined zastąpiony wartością null
- 4. dlaczego null == undefined jest prawdziwe w javascript
- 5. Wyrzucanie śmieci na lokalnej zmiennej
- 6. Jak wymusić pełne usuwanie śmieci w .NET 4.x?
- 7. Kiedy JavaScript zwraca wartość null & undefined?
- 8. C# Timery i usuwanie śmieci
- 9. Kiedy chcesz ustawić nowe środowiska w R
- 10. Czy zawsze jest w porządku, aby nie jawnie zainicjować wartości, jeśli chcesz ustawić ją tylko na wartość domyślną?
- 11. Ręczne usuwanie śmieci w Pythonie
- 12. Czy lepiej jest użyć DateTime.MinValue lub null daty DateTime?
- 13. Usuwanie śmieci w wątkach Perla
- 14. Javascript: użyć zmiennej, lub jeśli jest niezdefiniowany, domyślny ciąg
- 15. Tworzenie gier na Androida i usuwanie śmieci
- 16. Moja pierwsza metoda rozszerzenia, czy można ją napisać lepiej?
- 17. . Usuwanie śmieci .NET - na co wpływa?
- 18. Czy lepiej ustawić pustą tabelę lub ustawić wszystkie elementy tabeli na zero?
- 19. ngJeśli chcesz ustawić kolor?
- 20. Czy usuwanie śmieci odbywa się na poziomie procesu lub na poziomie aplikacji?
- 21. Czy na pewno chcesz nawigować?
- 22. Jak ustawić CONTEXT_INFO = NULL?
- 23. Jak ustawić pliki javascript jako: domyślne w szynach 4?
- 24. MySQL, lepiej wstawić NULL lub pusty ciąg znaków?
- 25. Prześlij plik jako ciąg do zmiennej JavaScript
- 26. Czy należy ustawić początkowe wartości ciągu java z null na ""?
- 27. Jak wymusić zamknięcie aplikacji na Androida i zrestartować ją?
- 28. Android Czy chcesz śledzić użytkownika na Twitterze?
- 29. Czy podczas serwowania plików JavaScript lepiej użyć aplikacji/javascript lub application/x-javascript
- 30. JavaScript .map na tablicy i usuwanie elementów, jeśli warunek spełniony
Ciężko napisać JS w tych dniach, w których GC nie działa poprawnie. Nie przejmuj się tym. Jeśli skończysz z obiektami, zostaną zebrane śmieci. Jeśli nie, jest to błąd w środowisku wykonawczym JS. W najgorszym przypadku jest to coś, z czym radzisz sobie w fazie optymalizacji, ale nie ma to wpływu na architekturę. –