我正在開發一個Angular/Typescript應用程序,該應用程序利用Autodesk Forge查看器在智能手機和平板電腦上顯示建築物模型。應用程序本身運行順利,但是當我關閉應用程序時發生問題。關閉應用程序後,我注意到幾乎沒有任何內存被釋放,如下圖所示(我在8秒鐘左右關閉應用程序),打開查看器兩三次後,內存不足並崩潰。 當我關閉應用程序時,我會按照Forge文檔中所述調用tearDown()和finish()方法,並將Forge查看器的所有可能引用設置爲null,但它們仍然存在內存泄漏。這是我的瀏覽器代碼的主要塊:設備上的Autodesk Forge查看器出現嚴重內存泄漏
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;
}
這是一個已知的問題和/或者是有一些方法可以讓我手工釋放關閉後僞造觀衆使用的內存? (它是利用的情況下,我必須能夠在一個會話後,對方開三個以上的觀衆一部分。)
更新[19-09-17]
我試圖打開我的查看器在一個新的,空的angular2項目中,雖然通常使用的內存較少,但仍然不會清除內存的相同行爲,如可以看到here。我注意到事件聽衆現在大幅減少。我還將Forge Viewer更新到了版本2.17
,同樣的問題在這裏也適用。
海梅嗨,我目前使用僞造觀衆的版本'2.13'。我已經嘗試過更新版本的查看器,但是這打破了我們大部分的事件處理,所以我最終恢復到2.13到最後 – sjoerd216
嗨,我會建議嘗試移動到更新的版本,以解決內存泄漏問題您遇到。您目前在查看器中遇到什麼樣的問題會影響您的事件處理?如果不升級到更新的版本,我不相信有什麼可以解決的。 –
升級到2.17後,項目中不再觸發'FINAL_FRAME_RENDERED_CHANGED_EVENT'。我們使用這個事件監聽器和'GEOMETRY_LOADED_EVENT'來阻止查看器準備好使用。但是由於第一個事件永遠不會觸發,所以應用程序將陷入等待事件觸發的狀態。有沒有這種事件處理程序的替代方法或任何其他方式知道模型何時完全加載? – sjoerd216