Dlaczego wyjątek powodowałby wycieki zasobów w Node.js?

Jeśli spojrzysz na początek Node.jsdokumentacja dla domen w Stanach:

Z samej natury sposobu, w jaki rzut działa w JavaScript, prawie nigdy nie ma sposobu, aby bezpiecznie „podnieść się tam, gdzie skończyłeś”, bez przecieków referencji lub tworząc jakiś inny niezdefiniowany stan kruchy.

Ponownie w przykładzie kodu podanym w tej pierwszej sekcji jest napisane:

Chociaż zapobiegliśmy ponownemu uruchomieniu procesu, wyciekamy zasoby jak szalone

Chciałbym zrozumieć, dlaczego tak jest? Jakie zasoby wyciekają? Zalecają, aby używać tylko domen do przechwytywania błędów i bezpiecznego zamykania procesu. Czy jest to problem ze wszystkimi wyjątkami, nie tylko podczas pracy z domenami? Czy rzucanie i łapanie wyjątków w Javascript jest złą praktyką? Wiem, że jest to wspólny wzór w Pythonie.

EDYTOWAĆ

Rozumiem, dlaczego w języku nieobsługiwanym przez śmieci mogą występować wycieki zasobów, jeśli zostanie zgłoszony wyjątek, ponieważ nie zostanie uruchomiony żaden kod, który można uruchomić w celu oczyszczenia obiektów, jeśli zgłoszony zostanie wyjątek.

Jedynym powodem, jaki mogę sobie wyobrazić za pomocą Javascript jest to, że rzucanie wyjątku przechowuje odwołania do zmiennych w zakresie, w którym został zgłoszony wyjątek (a może i rzeczy w stosie wywołań), zachowując w ten sposób odniesienia dookoła, a następnie obiekt wyjątku jest przechowywany i nigdy zostaje oczyszczony. Chyba że wyciekające zasoby są zasobami wewnętrznymi silnika.

AKTUALIZACJA

Napisałem blog wyjaśniający odpowiedź na to pytanie nieco lepiej teraz.Sprawdź to

questionAnswers(3)

yourAnswerToTheQuestion