/ / Уникнути витоків пам'яті в додзьо? - javascript, dojo

Уникайте витоків пам'яті в додзьо? - javascript, dojo

Для довгих запущених програм у браузеріВикористовуючи набір інструментів, таких як додзьо, я знову і знову чую точку зору, що слід уникати зворотних посилань. Але кожна мова / структура має свої особливості, коли мова йде про управління пам'яттю.

Як я можу уникати зворотних посилань під час створення додатка в додзе? Я думаю про правила в руслі "alloc" в iOS: як користуватися, і як очистити себе від вас після завершення.

Відповіді:

2 для відповіді № 1

Я думаю, що найбільша річ, яка приходить до додзе, полягає в тому, що ви повинні пам'ятати, щоб відключити всі події, які ви підключаєтеся.

Для цього є простий уривок, наприклад, у користувацькому режимі:

//connecting some events
this._events = [
dojo.connect(...),
dojo.connect(...)
];

Тепер дуже просто відключити:

dojo.forEach(this._events, dojo.disconnect, dojo);

Той самий малюнок застосовується при використанні this.connect в дижіті


1 для відповіді № 2

Слід також зазначити, що навіть якщо ви дотримуєтеся належної практики відключення обробників подій, згаданих у ця відповідь, у вас може виникнути труднощі. Там можуть бути циклічні посилання, які збирач сміття не здатний виявляти, або посилання, які не були випущені належним чином самим Додзе. Іноді вам потрібно явно називати "delete" на них. Подивитися це як приклад.