Приводит ли этот код к утечке памяти в JavaScript - PullRequest
0 голосов
/ 14 апреля 2019

Пожалуйста, взгляните на следующий код:

universe.makeFramework = function()
{
    const fw = Framework();
    fw.version = 0;
    fw.uni = this;
    universe.fws.add( fw ); // keep a reference of framework in a set
    fw.realise( universe.ctrl );
    idToObj.set( nextId, fw ); // keep a reference of framework in a map
    ++nextId;
}

По сути, у меня есть юниверс, который может иметь один или несколько каркасных объектов.В этой функции (makeFramework) я создаю новый каркас и сохраняю его ссылку в одной карте и одном наборе.

Теперь предположим ситуацию, когда я хочу удалить этот фреймворк.Поэтому я должен удалить ссылки с карты, установить, а также DOM.Этого достаточно?Должен ли я беспокоиться о const fw?Должен ли я сделать что-то вроде ниже?

universe.makeFramework = function()
    {
        let fw = Framework();
        fw.version = 0;
        fw.uni = this;
        universe.fws.add( fw ); // keep a reference of framework in a set
        fw.realise( universe.ctrl );
        idToObj.set( nextId, fw ); // keep a reference of framework in a map
        ++nextId;
        fw = undefined;
    }

1 Ответ

1 голос
/ 14 апреля 2019

Нет необходимости.Сборщик мусора позаботится о константе fw после того, как makeFramework завершит свой запуск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...