Pracuję nad aplikacją angularjs, używając dyrektyw angularjs-nvd3 do renderowania wykresów.Jak uniknąć wycieków pamięci za pomocą dyrektyw angularjs-nvd3
Po sprawdzeniu w Narzędziach dla programistów w przeglądarce Chrome wykryłem wycieki pamięci powiązane z wykresami. Gdy użytkownik przegląda różne widoki zawierające wykresy, pamięć nigdy nie jest w pełni zwolniona.
ja już robi jakieś porządki na kontrolerach wykresy:
$scope.$on('$destroy', function() {
d3.select('#exampleId').remove();
d3.select('#exampleId2').remove();
...
});
A na razie routeChange:
myApp.run(function($rootScope, $templateCache) {
//try to clear unused objects to avoid huge memory usage
$rootScope.$on('$routeChangeStart', function(event, next, current) {
if (typeof(current) !== 'undefined'){
//destroy all d3 svg graph
d3.selectAll('svg').remove();
nv.charts = {};
nv.graphs = [];
nv.logs = {};
}
});
});
Kiedy usunąć wykresy z mojej aplikacji, wykorzystanie pamięci zawsze idzie z powrotem do wartości początkowej.
Z wykresu: whithout:
jest jakiś inny sposób, aby zwolnić pamięć generowanego przez te wykresy?
jsfiddle, aby zademonstrować problem.
Nie mam odpowiedzi, ale jestem również chętny, aby znaleźć sposób na zniszczenie wykresów na zmianę stanu/trasy. Ten problem jest omawiany tutaj: https://github.com/novus/nvd3/pull/396 – dennis
Witam! Którą wersję nvd3 używasz? – Artemis
@Artemis v1.1.15-beta – Pierre