角度数据/内存泄漏?范围内的服务和组件未删除

问题描述 投票:1回答:1

我对Angular应用程序中的数据泄漏有问题。考虑以下示例:

仅在经过身份验证的用户可用的RestrictedComponent中,我已将某些SensitiveDataService定义为提供者:

@Component({
  providers: [SensitiveDataService]
})
export class RestrictedComponent {}

并且似乎运行良好-当我注销并以其他用户身份登录时,SensitiveDataService 似乎中的数据将在新的类实例上再次初始化,但是...当我占用内存在Chrome devtools中使用堆快照,我实际上可以看到SensitiveDataService的两个现有实例将整个数据一直保存到站点关闭!

[这是TeammatesService.teammates字段示例中的内存堆的屏幕截图:Angular data / memory leak屏幕截图来自Ahead of Time产品构建(关闭了代码错误处理),因此这是可能发生此类问题的最后一个地方...

进一步-我可以看到作用域组件的行为完全相同-每次在需要时都会创建新实例,但是旧实例仍然存在于内存中。我希望这不是期望的行为,并且已经看到一些有关Angular存储库中内存泄漏的未解决问题,但是我现在需要它正常工作-我可以在不手动清除所有数据的情况下实现它吗?也许我可以直接访问Angular DI存储以某种方式删除未使用的实例?

angular typescript angular-module
1个回答
0
投票

删除组件中的providers: [SensitiveDataService]。将 @Injectable({ providedIn: 'root' }) 添加到SensitiveDataService

© www.soinside.com 2019 - 2024. All rights reserved.