我在 AngularJS 中实现了音频播放器应用程序,但它消耗大量 RAM。我正在执行的操作顺序如下:
- 登录页面的路由
- 登录然后转到下一页
- 登出
- 重复步骤 1 到 3 几次
令人惊讶的是,第一步的内存是38 MB,然后在第二步之后增加到211 MB,在第三步之后是249 MB等等,所以它是累积的,并且在任何ng之后都没有释放内存-查看更改
这是我的代码示例:
index.html页面
<html ng-app="myApp">
<head><!-- application dependencies (js and css files) --></head>
<body>
<div ng-view></div>
</body>
</html>
app.js文件
var app = angular.module('myApp', ['ngRoute']);
app.config(['$routeProvider', '$locationProvider', '$httpProvider',
function ($routeProvider, $locationProvider, $httpProvider) {
$routeProvider.when('/login', {
templateUrl: 'login.html',
controller: 'loginController'
});
$routeProvider.when('/', {
templateUrl: 'home.html',
resolve:{/** resolve function for login checking */}
controller: 'homeController'
});
}]);
我尝试了清理$templateCache的解决方案清除此问题的解决方案,但是在我尝试过的情况下,它不能成为解决方案,而且问题不在模板本身,而是DOM 和控制器数据有问题
我该如何处理这个内存问题,所以当我在 ng-view 中更改视图时它不会消耗所有这些内存(因为它不是模板大小)
更新1:
在解析登录数据并在注销后检查服务器的响应后,我在登录或注销时使用 $location.path('/route') 在视图之间切换,这可能是问题吗?
更新 2:
我创建了一个plunker来模拟过多切换视图时内存的增加(当然这不是实际数字,因为它是模拟)