Ich entwickle eine Angular/Typescript-Anwendung, die den Autodesk Forge-Viewer zum Anzeigen von Gebäudemodellen auf Smartphones und Tablets verwendet. Die Anwendung selbst läuft reibungslos, aber das Problem tritt auf, wenn ich die Anwendung schließe. Nach dem Schließen der Anwendung merke ich, dass kaum Speicher freigegeben wird, wie im Bild unten zu sehen ist (Ich schließe die Anwendung um die 8-Sekunden-Marke) und nach dem Öffnen des Betrachters für zwei oder drei Mal wird es nicht mehr genügend Arbeitsspeicher und abstürzen. Wenn ich die Anwendung schließe, rufe ich sowohl die Methode tearDown() als auch die Methode finish() wie in den Forge-Dokumenten beschrieben auf und setze alle möglichen Verweise auf den Forge-Viewer auf null, aber das Speicherleck bleibt bestehen. Dies ist der Haupt Teil meines Betrachters Code:Schwerwiegende Speicherverluste im Autodesk Forge-Viewer auf Geräten
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;
}
Ist das ein bekanntes Problem und/oder gibt es eine Weise, die ich manuell den Speicher durch den Forge-Viewer nach dem Verschluss verwendete freigeben kann? (Es ist ein Teil des Anwendungsfalls, dass ich in der Lage sein mehr als drei Zuschauer in einer Sitzung hintereinander zu öffnen.)
Update [19-09-17]
Ich habe versucht, meine Öffnung Betrachter in einem frischen, leeren angular2-Projekt, und obwohl im Allgemeinen weniger Speicher verwendet wird, gilt immer noch das gleiche Verhalten, dass der Speicher nicht gelöscht wird, wie man sehen kann here. Ich stelle fest, dass die Ereignis-Listener jetzt drastisch reduziert sind. Ich habe auch den Forge Viewer auf Version 2.17
aktualisiert, und das gleiche Problem gilt auch hier.
Hallo Jaime, ich bin derzeit mit Version '2.13' des Betrachters Forge. Ich habe bereits mit neueren Versionen des Viewers experimentiert, aber das hat den Großteil unserer Event-Handhabung ruiniert, so dass ich am Ende wieder auf 2.13 zurückgesetzt habe. – sjoerd216
Hallo, ich schlage vor, versuchen zu einer neueren Version zu gelangen, um die zu adressieren Memory-Leak-Problem, das Sie erleben. Welche Art von Problemen haben Sie derzeit mit dem Viewer, die Ihre Ereignisbehandlung unterbrechen?Ich glaube nicht, dass es etwas gibt, was getan werden kann, um dies ohne das Upgrade auf eine neuere Version zu beheben. –
Nach dem Upgrade auf 2.17 wurde 'FINAL_FRAME_RENDERED_CHANGED_EVENT' im Projekt nicht mehr ausgelöst. Wir verwenden diesen Ereignis-Listener zusammen mit dem 'GEOMETRY_LOADED_EVENT', um festzustellen, wann der Viewer zur Verwendung bereit ist. Da das erste Ereignis jedoch nie ausgelöst wird, bleibt die Anwendung hängen und wartet auf das Ereignis. Gibt es eine Alternative für diesen Event-Handler oder eine andere Möglichkeit zu wissen, wann das Modell vollständig geladen ist? – sjoerd216