路由时AngularJs的内存泄漏

时间:2019-01-15 15:18:26

标签: javascript angularjs memory-leaks

我有一个带有3个屏幕的AngularJs应用程序,因此该应用程序使用ui-router组件每X秒在这3个屏幕之间进行路由。

$stateProvider
    .state("page", {
        url: "/:pageId/:pageType",
        template: pageTemplate,
        controller: "contentCtrl",
        resolve: {
            contentSolver: function (resolveService, $stateParams) {
                resolveService.solveData($stateParams.pageId, $stateParams.pageType);
            }
        }
    })

还有

  $state.go('page', {
                    pageId: $stateParams.pageId,
                    pageType: pageType
                });

我有一个名为resolveService的服务,我从服务器获取页面内容,然后将内容传递给控制器​​。

每次屏幕更改都会发生内存泄漏(如果我不在页面之间进行切换,则不会出现内存泄漏)。

我发现了这一点

每次屏幕更改都会发生内存泄漏(如果我不在页面之间进行切换,则不会出现内存泄漏)。

在每个开关上,我都请求获取一些图片,但是如果我在同一页面上进行两次开关,则我将得到2张相同的图像,依此类推。

有什么办法可以删除旧版本?

Picture

Chrome开发工具中的“性能”标签。

节点数量迅速增加,我需要检查这种情况吗?

Chrome Dev Performance

我可以使用任何工具来查找泄漏吗?我尝试过Chrome扩展程序,但Dynatrace并没有成功,但它们仅支持nodejs。

如果您有任何想法,请告诉我:),谢谢!

1 个答案:

答案 0 :(得分:1)

您要用x秒的时间路由这些页面,您需要销毁调用您正在使用的过渡的函数(即过渡onSuccess,onStart),销毁一旦过渡开始,为什么,因为它将继续监听每次转换都会导致多次出现响应。

$scope.$on('$destroy',functionName);