2013-07-04 7 views
6

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?

+0

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ę. –

Odpowiedz

8

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.

+4

Co w szalonym stylu, jestem tutaj zdesperowany. –

+0

@EricWooley Szalona moda miałaby rozpocząć przydzielanie tony pamięci, wyzwalając GC, ale wspomniany przydział sprawiłby, że byłoby to bezcelowe. – alex

+0

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. –

5

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.

Powiązane problemy