angular - Angular 应用程序即使在被销毁后仍保留在内存中
问题描述
我正在使用Tailor和Angular 8.2.14开发一个微前端。
使用chrome dev工具分析js堆大小,当我从主应用程序导航到另一个页面时,内存没有释放。
我知道 ngOnDestroy 仅在其已实现的类在正在运行的浏览器会话的上下文中被销毁时才会触发。换句话说,ngOnDestroy 在以下场景中不会被可靠地调用:
- 页面刷新
- 标签关闭
- 浏览器关闭
- 离开页面导航
为了缓解这个问题,我在main.ts中尝试了这个解决方法:
let appModule: NgModuleRef<AppModule> | undefined;
platformBrowserDynamic()
.bootstrapModule(AppModule)
.then((app: NgModuleRef<AppModule>) => (appModule = app))
.catch(err => console.log(err));
window.addEventListener('beforeunload', () => {
if (appModule) {
const testability = appModule.injector.get(TestabilityRegistry);
appModule.destroy();
testability.unregisterApplication("app-root");
}
appModule = undefined;
})
有没有办法彻底摧毁 Angular 应用程序?
解决方案
推荐阅读
- java - 我可以让 SWT 表标题跨越以制作超级标题吗
- docker - 无法在 Docker Desktop for Windows 上创建 NAT 网络
- python - 如何通过 eb cli (django postgres) 迁移 AWS RDS 数据库?
- java - Java Morphia Map/List 基于泛型类型加载,但不从继承给定类型的子类加载
- c# - 通过 Mongo DB C# 驱动程序从嵌套列表中删除 Guid(uuid)
- azure - 使用专用终结点定期在应用服务上获得 403 IP Forbidden
- postgresql - DOCKERFILE RUN addgroup: 组 'postgres' 正在使用中
- docker - 如何将 Docker Hub 映像拉到 Google Cloud Run?
- flutter - 扑动当api更改时如何重建我的小部件?
- javascript - 如何在圆环图中的扇区之间进行缩进?