【发布时间】:2018-02-23 10:38:38
【问题描述】:
我正在开发一个 Angular/Typescript 应用程序,它使用 Autodesk Forge 查看器在智能手机和平板电脑上显示建筑模型。应用程序本身运行平稳,但是当我关闭应用程序时出现问题。关闭应用程序后,我注意到几乎没有任何内存被释放,如下图所示(我在 8 秒左右关闭应用程序),再打开查看器两到三次后,它会耗尽内存和崩溃。 当我关闭应用程序时,我调用了 Forge 文档中描述的 tearDown() 和 finish() 方法,并将对 Forge 查看器的所有可能引用设置为 null,但它们的内存泄漏仍然存在。这是我的查看器代码的主要部分:
this.initOptions = {
path: 'url to model',
env: 'Local',
useADP: false,
extensions: [],
};
Autodesk.Viewing.Initializer(this.initOptions, () => {
this.onEnvInitialized();
});
private onEnvInitialized() {
this.viewer = new Autodesk.Viewing.Private.GuiViewer3D(this.viewerContainer.nativeElement, {});
this.viewer.initialize();
this.viewer.loadModel(this.initOptions.path, {}, (doc) => {
// further forge viewer execution here
}, (errorMsg) => {
console.log(errorMsg);
});
}
public ngOnDestroy() {
// remove all eventlisteners
this.initOptions = null;
this.viewer.tearDown();
this.viewer.finish();
this.viewer = null;
}
这是一个已知问题和/或有什么方法可以在关闭后手动释放 Forge 查看器使用的内存? (这是用例的一部分,我必须能够在一个会话中依次打开三个以上的查看器。)
更新 [19-09-17]
我尝试在一个新的、空的 angular2 项目中打开我的查看器,尽管通常使用的内存较少,但不清除内存的相同行为仍然适用,如 here 所示。我确实注意到事件侦听器现在大大减少了。我还将 Forge Viewer 更新到版本 2.17,同样的问题在这里仍然适用。
【问题讨论】:
标签: memory-leaks autodesk-forge autodesk-viewer