2017-09-14 45 views
0

我正在開發一個Angular/Typescript應用程序,該應用程序利用Autodesk Forge查看器在智能手機和平板電腦上顯示建築物模型。應用程序本身運行順利,但是當我關閉應用程序時發生問題。關閉應用程序後,我注意到幾乎沒有任何內存被釋放,如下圖所示(我在8秒鐘左右關閉應用程序),打開查看器兩三次後,內存不足並崩潰。 enter image description here 當我關閉應用程序時,我會按照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,同樣的問題在這裏也適用。

回答

0

您目前使用的瀏覽器版本是?在這裏您可以看到查看器版本上最近更改的列表,默認情況下v2.17的內存限制爲ON。

https://developer.autodesk.com/en/docs/viewer/v2/overview/changelog/

而且觀衆的版本可如果沒有從控制檯通過鍵入LMV_VIEWER_VERSION

讓我知道這件事,所以我們可以繼續它的研究定義進行檢查。 乾杯,

+0

海梅嗨,我目前使用僞造觀衆的版本'2.13'。我已經嘗試過更新版本的查看器,但是這打破了我們大部分的事件處理,所以我最終恢復到2.13到最後 – sjoerd216

+0

嗨,我會建議嘗試移動到更新的版本,以解決內存泄漏問題您遇到。您目前在查看器中遇到什麼樣的問題會影響您的事件處理?如果不升級到更新的版本,我不相信有什麼可以解決的。 –

+0

升級到2.17後,項目中不再觸發'FINAL_FRAME_RENDERED_CHANGED_EVENT'。我們使用這個事件監聽器和'GEOMETRY_LOADED_EVENT'來阻止查看器準備好使用。但是由於第一個事件永遠不會觸發,所以應用程序將陷入等待事件觸發的狀態。有沒有這種事件處理程序的替代方法或任何其他方式知道模型何時完全加載? – sjoerd216

0

問題仍然出現在鍛造查看器的3.3.5版本中。然而,這個問題似乎有點深刻。它看起來像調用viewer.finish()時不會釋放任何用於紋理的GPU內存。

我們每次用瀏覽器離開頁面時都會調用此函數,因爲角度會破壞DOM中的畫布。我期望.finish也可以從內存中移除紋理。是否還有其他函數可以調用來完全卸載任何模型和紋理?

下面是一些可以看到內存堆積的截圖。

Initial initialisation of the page

after returning to this page after closing it

after returning to this page after closing it a third time

+0

如果您有新問題,請點擊[Ask Question](問問題)(https://stackoverflow.com/questions/ask)按鈕。如果有助於提供上下文,請包含此問題的鏈接。 - [來自評論](/ review/low-quality-posts/18751209) –

+0

它不是一個新問題,它是對Sjoerds問題的一個擴展,它帶有更多的數據。它與Sjoerd在同一個應用程序中涉及完全相同的問題。 –

+0

你把回答問題,新的或擴展名,請理解它不是這個地方 –