2015-03-05 17 views

Odpowiedz

25

JavaScript używa funkcji czyszczenia pamięci do automatycznego usuwania obiektów, gdy nie są już przywoływane. Nie ma koncepcji destruktorów ani finalizatorów.

Nie można obserwować, kiedy obiekt jest usuwany przez śmieciarz, ani nie jest przewidywalny.

+3

Usuwanie śmieci może zostać uniemożliwione, jeśli licznik czasu, wywołanie zwrotne lub detektor zdarzeń jest gdzieś podłączony do obiektu, który ma zostać usunięty. Możesz również uzyskać błędy, jeśli callback/listener nadal istnieje, ale obiekt nie. Jeśli chcesz mieć całkowitą pewność, że możesz napisać własną metodę destruktora i wywołać ją przed usunięciem obiektu. – Kokodoko

+5

To nie jest poprawna odpowiedź. Gábor Lupák jak najbardziej wie, że odbywa się tam zbiórka śmieci. Nawet przy użyciu narzędzia do zbierania śmieci nadal potrzebujesz czasami publikować długotrwałe referencje w określonych punktach podczas wykonywania aplikacji, aby zasób odniesień mógł kwalifikować się do zbierania śmieci lub przynajmniej aby nie było wycieku pamięci. Moja sugestia jest taka, że ​​tworzysz interfejs (przykład: interface Releasable {} i definiujesz metodę o nazwie release() i może flagę o nazwie release, której możesz użyć, aby zapobiec uruchomieniu wersji() więcej niż raz. – asiby

Powiązane problemy