Performance 销毁Angular2应用程序

Performance 销毁Angular2应用程序,performance,angular,memory-management,Performance,Angular,Memory Management,我有一个要求,销毁Angular2应用程序时,用户被导航到其他页面(注意:这是一个应用程序,我们正在使用Angular2只为一个页面)。因此,当用户离开此页面时,我们必须取消绑定ng2应用程序 我的申请参考如下: platformBrowserDynamic([ {provide: 'ConfigService', useValue: {} } ]).bootstrapModule(AppModule).then((appModule:NgModuleRef<AppModule&g

我有一个要求,销毁Angular2应用程序时,用户被导航到其他页面(注意:这是一个应用程序,我们正在使用Angular2只为一个页面)。因此,当用户离开此页面时,我们必须取消绑定ng2应用程序

我的申请参考如下:

platformBrowserDynamic([
    {provide: 'ConfigService', useValue: {} }
]).bootstrapModule(AppModule).then((appModule:NgModuleRef<AppModule>)=>{
    const appRef = appModule.injector.get(ApplicationRef);

    if(!!callback)
        callback(appRef);
});
其中\u ref是在上述回调中传递的应用程序引用

整个流程调用应用程序中每个组件的ngondestory,但是,当我导航到非角度页面时,我可以看到这些组件仍在内存中,并在再次打开同一页面时导致性能问题

您可以从屏幕截图中看到,即使我如上所述销毁了应用程序,该组件仍然存在并消耗内存


这里的问题是什么。销毁应用程序是否不足以清除内存?

我知道这是一个非常老的问题,但这可能会有所帮助

如果您正在查找angular应用程序销毁时执行的事件,可以使用
PlatformRef
,该平台具有
OnDestroy()
回调

主要是

函数doSomethingOnAppDestory(){
console.log('test');
}
platformBrowserDynamic().bootstrapModule(AppModule)。然后(ref=>{
//确保Angular在热重新加载时自行销毁。
如果(窗口['ngRef']){
窗口['ngRef'].destroy();
}
窗口['ngRef']=ref;
参考onDestroy(doSomethingOnAppDestory);
//否则,记录引导错误
}).catch(err=>console.error(err));

_ref.components[0].hostView.destroy();