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

时间:2017-10-24 17:39:18

标签: angular typescript angular-module

我在Angular应用程序中遇到数据泄漏问题。请考虑以下示例:

RestrictedComponent仅适用于经过身份验证的用户的情况下,我已将一些SensitiveDataService定义为提供者:

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

似乎工作得很好 - 当我退出并以其他用户身份登录时,SensitiveDataService 中的数据似乎会在新的类实例上再次初始化,但是......当我在Chrome devtools中获取内存堆快照时,我实际上可以看到有{2}个现有实例将整个数据保持整个时间直到站点关闭!

以下是SensitiveDataService字段示例中内存堆的屏幕截图: Angular data / memory leak 屏幕截图来自Ahead of Time生产版本(关闭代码uglificiation),所以这是可能发生此类问题的最后一个地方......

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

1 个答案:

答案 0 :(得分:0)

删除组件中的undefined。 将localhost:8888添加到providers: [SensitiveDataService]