Работа GC при использовании Set в Node.js

136
10 декабря 2019, 03:20

Есть парочка вопросов по работе Garbage Collector при использовании объектов Set в Node.JS.

  1. Срабатывает ли GC после того, как вызвать метод .clear() для объекта Set?

  2. Каким образом лучше всего очищать set?

  3. Команда set = null; приводит ли к вызову GC для всех объектов, что лежали в set?

Answer 1

Пара слов о сборке мусора:

Когда сработает garbage collector (gc) выбирает v8, я не знаю деталей, но предполагаю что там очень кучерявая логика основанная на алгоритме Mark and Sweep

Если объект недостижим по ссылкам, теоретически gc должен его уничтожить.

Если все таки хочется вызвать gc вручную, это можно, однако понадобится бубен Настоятельно рекомендую так не делать

 node --expose-gc app.js

После этого в можно в приложении попросить gc прибраться.

global.gc();

Только он все равно ничего не уберет, если на объект кто то ссылается и Вы это не учли.

Теперь коротко по пунктам.

  1. Нет, gc сработает тогда, когда решит рантайм.

  2. Если вы имеете в виду очистку содержимого самого объекта Set, то что вы сделали .clear() этого достаточно, если Вы хотите чтобы так же gc собрал те объекты, которые лежали в Set, вам надо убедиться, что на них нет больше ссылок.

  3. См пункт 2

READ ALSO
Type assertions

Type assertions

Кто ни будь может на пальцах объяснить с нормальными примерами, что такое assertions в typescript и где это применяетсяВ документации этому вопросу,...

109
Как убрать ошибку LLVM version appears incorrect?

Как убрать ошибку LLVM version appears incorrect?

Я установил на Ubuntu emscripten Проверку модулей установленных проходит

144
Сетчатый прайс в sql

Сетчатый прайс в sql

Решил вернуть тему, дабы поползав в парсинге эксель через php понял, что не вариантВопрос такой, как создать таблицу mysql для получения стоимости...

150
Какой первичный ключ лучше? id +user_id vs id

Какой первичный ключ лучше? id +user_id vs id

Есть 2 таблицыТаблица юзеров (user) и таблица их целей(goal_data)

116