Angularjs 在chrome和firefox中,Javascript应用程序每4-5小时就会崩溃一次

Angularjs 在chrome和firefox中,Javascript应用程序每4-5小时就会崩溃一次,angularjs,Angularjs,我的应用程序每4-5小时就会崩溃一次,我不确定这是否是因为内存泄漏或任何代码性能问题。 我有3-4个函数,每5秒调用self都会超时,它们在绘制DOM之前会进行一些数据处理 正如您所看到的,每次拍摄新快照时,我的快照都在不断增加。 无法找到到底发生了什么。但是,如果我们查看快照,可以说字符串从快照1到快照9一直在显著增加 感谢您的帮助 示例代码: function fetchSummary() { if(!$rootScope.pageVisible) {

我的应用程序每4-5小时就会崩溃一次,我不确定这是否是因为内存泄漏或任何代码性能问题。 我有3-4个函数,每5秒调用self都会超时,它们在绘制DOM之前会进行一些数据处理

正如您所看到的,每次拍摄新快照时,我的快照都在不断增加。 无法找到到底发生了什么。但是,如果我们查看快照,可以说字符串从快照1到快照9一直在显著增加

感谢您的帮助

示例代码:

function fetchSummary() {

        if(!$rootScope.pageVisible) {
            $scope.fetchSummaryTimeout = $timeout(fetchSummary, 1000);
            $scope.lastRefreshedDateTime = new Date();
            return;
        }

            $http
                .get(apiUri + '/statusboard/api/summaryDb')
                .success(function (response) {

                    if (response && response.length) {
                            $scope.databases = response[0];
                            $scope.fetchSummaryTimeout = $timeout(fetchSummary, 5000);
                            var i, j, l;

                            //alert counts
                            angular.forEach($scope.databases.summary, function (summary) {
                                if (summary.eventType === "database_connection_alert") {
                                    $scope.connectionCount += summary.count;
                                }
                                if (summary.eventType === "database_session_alert" || summary.eventType === "database_load_alert") {
                                    $scope.warnCount += summary.count;
                                }
                            });

                            for (l = 0; l < $scope.databases.components.length; l++) {
                                var component = $scope.databases.components[l];
                                //some data stuff

                                for (j = 0; j < component.summary.length; j++) {
                                    var summary = component.summary[j];

                                    }}

                            $scope.coloCounts.any = $scope.coloCounts.All + $scope.coloCounts.lvs + $scope.coloCounts.slc + $scope.coloCounts.phx;

                            for (i = 0; i < $scope.databases.vcsStatus.length; i++) {
                                //Some stuff
                            }

                        } 
                    } else {
                        $scope.fetchSummaryTimeout = $timeout(fetchSummary, 5000);
                    }

                    angular.element("#last-updated, #last-updated-overlay").remove();

                })
                .error(function () {
                    $scope.fetchSummaryTimeout = $timeout(fetchSummary, 5000);
                });
        } 
    }
函数fetchSummary(){
如果(!$rootScope.pageVisible){
$scope.fetchSummaryTimeout=$timeout(fetchSummary,1000);
$scope.lastRefreshedDateTime=新日期();
返回;
}
$http
.get(apiUri+'/statusboard/api/summaryDb')
.成功(功能(响应){
if(响应和响应长度){
$scope.databases=响应[0];
$scope.fetchSummaryTimeout=$timeout(fetchSummary,5000);
变量i,j,l;
//警报计数
angular.forEach($scope.databases.summary,function(summary){
if(summary.eventType==“数据库连接警报”){
$scope.connectionCount+=summary.count;
}
if(summary.eventType==“数据库会话警报”| | summary.eventType==“数据库加载警报”){
$scope.warnCount+=summary.count;
}
});
对于(l=0;l<$scope.databases.components.length;l++){
var component=$scope.databases.components[l];
//一些数据资料
对于(j=0;j

“$scope.databases”
是每次我设置响应时的变量。

您能提供任何代码吗?这些问题通常是由于
setInterval
在使用完毕后未被清除,它们会一直运行,超时使用越来越多的处理能力,导致应用程序崩溃。字符串似乎是罪魁祸首。我添加了示例代码@MatthewW.Try in Chrome canary(目前为v58)或者在@JaromandaX的[远]旧版本中,如何解决此字符串问题?您能提供任何代码吗?这些问题通常是由于
setInterval
在使用完毕后未被清除,它们会一直运行,超时使用越来越多的处理能力,导致应用程序崩溃。字符串似乎是罪魁祸首。我添加了示例代码@MatthewW.Try in Chrome canary(目前为v58)或者在@JaromandaX的[远]旧版本中,如何解决此字符串问题?