2011-01-13 2 views
0

Я новичок в додзё и в настоящее время испытываю некоторые проблемы со значительными утечками памяти. Поскольку я читал, что сборщик мусора JavaScript может иметь проблемы с диджитами, которые не были уничтожены, я пытаюсь позаботиться об этом, но не слишком успешным.Как избежать утечек памяти, вызванных диджитами?

Итак, сначала я пытаюсь избавиться от всех виджетов, когда страница не остался:

dojo.addOnWindowUnload(function(){ 
    dijit.registry.forEach(function(widget){ 
     widget.destroy(); 
    }); 
}); 

Это, кажется, помогает немного, но не так сильно, как я ожидал бы. Поэтому на определенных этапах я звоню:

dojo.forEach(dijit.findWidgets(node), function(widget){ 
    widget.destroyRecursive(); 
}); 

Но у меня все еще есть утечки памяти, которые наверняка вызваны диджитами. Есть ли общие советы и рекомендации, как избавиться от таких? Или, если вышеописанные вызовы могут заботиться обо всем, и я должен искать где-то еще утечки? Ну, я знаю, что это довольно общий вопрос, но я надеюсь, что вы можете дать мне несколько советов.

Спасибо!

+0

Какой браузер (-ы)? Только IE? –

+0

только Firefox/OSx atm, Safari/OSx, похоже, ведут себя намного лучше. Еще не проверял других. – Tina

ответ

0

Вам не нужно это делать самостоятельно - см. http://trac.dojotoolkit.org/browser/tags/release-1.5.0/dijit/_base/manager.js#L293.

Если у вас есть утечки памяти после уничтожения страницы или вкладки, это скорее всего ошибка в Dijit. Пожалуйста, сделайте минимальный тестовый пример и отправьте билет на trac или вставьте его здесь, и я посмотрю и/или передам его кому-то, кто может помочь.

Смежные вопросы