我在Angular应用程序中遇到数据泄漏问题。请考虑以下示例:
在RestrictedComponent
仅适用于经过身份验证的用户的情况下,我已将一些SensitiveDataService
定义为提供者:
@Component({
providers: [SensitiveDataService]
})
export class RestrictedComponent {}
似乎工作得很好 - 当我退出并以其他用户身份登录时,SensitiveDataService
中的数据似乎会在新的类实例上再次初始化,但是......当我在Chrome devtools中获取内存堆快照时,我实际上可以看到有{2}个现有实例将整个数据保持整个时间直到站点关闭!
以下是SensitiveDataService
字段示例中内存堆的屏幕截图:
屏幕截图来自Ahead of Time生产版本(关闭代码uglificiation),所以这是可能发生此类问题的最后一个地方......
更进一步 - 我可以看到与范围组件完全相同的行为 - 每次需要时都会创建新实例,但旧实例仍然存在于内存中。我希望这不是行为,并且已经看到一些关于Angular存储库中的内存泄漏的公开问题,但是我现在需要它 - 我可以在没有手动清除整个数据的情况下实现它吗?也许我可以直接访问Angular DI存储,以便以某种方式删除未使用的实例?
答案 0 :(得分:0)
删除组件中的undefined
。
将localhost:8888
添加到providers: [SensitiveDataService]