首页 > 解决方案 > Angular 应用程序即使在被销毁后仍保留在内存中

问题描述

我正在使用TailorAngular 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 应用程序?

标签: angulartypescriptwebpackmemory-leaksng-bootstrap

解决方案


推荐阅读