2017-09-14 6 views
0

Autodesk Forgeビューアを使用してスマートフォンとタブレットに建物モデルを表示するAngular/Typescriptアプリケーションを開発しています。アプリケーション自体はスムーズに動作しますが、アプリケーションを閉じると問題が発生します。アプリケーションを終了した後、私は以下の画像(8秒のマークの周りでアプリケーションを閉じる)で見ることができるように、ほとんどメモリが解放されていないことに気付き、2〜3回以上ビューアーを開いた後、クラッシュする。 アプリケーションを終了すると、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; 
} 

これは既知の問題であり、および/または私は手動で閉鎖後フォージビューアが使用するメモリを解放することができますいくつかの方法がありますか? (それは私が1つのセッションで互いの後つ以上の視聴者を開くことができるようにする必要があり、ユースケースの一部である。)

アップデート[19-09-17]

私は私を開いてみましたビューアは新しく空のangular2プロジェクトであり、一般的に使用されるメモリは少なくなりますが、メモリをクリアしないのと同じ振る舞いが適用されます(here参照)。イベントリスナーが大幅に削減されていることに気付きました。また、Forge Viewerをバージョン2.17にアップデートしました。同じ問題がここでも適用されます。

答えて

0

現在使用しているビューアのバージョンは?ここでは、ビューアバージョンの最近の変更の一覧が表示されます.v2.17の既定ではメモリ制限がオンになっています。

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

新しい質問がある場合は、[質問する](https://stackoverflow.com/questions/ask)ボタンをクリックして質問してください。コンテキストを提供する場合は、この質問へのリンクを含めてください。 - [レビューから](レビュー/低品質の投稿/ 18751209) –

+0

これは新しい質問ではなく、Sjoerdsと同じアプリで同じ問題が発生しています。 –

+0

あなたは答えとして質問をしました、新規または延長、それは場所ではないことをご理解ください –

関連する問題