Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - NeonNeon

#1
Danke für den Tip den Heap mit dem VisualVM zu tracken.  :)

Du hattest natürlich recht.
Ich konnte jetzt herausfinden, dass das Problem nicht mit dem JPCT-Gebrauch zusammenhängt. Es sind Funktionen verantwortlich, die in der Anwendung neben dem Erstellen der Object3D Objekte ausgeführt werden.
Ich weiß zwar noch nicht wieso das so kommt, und wie ich das beheben kann. Aber das ist dann ja kein Problem mehr für diesen Thread.  ;)

Die Compile-Methode benutze ich im übrigen nicht.

Schönen Gruß
#2
ich habe bei meiner Desktop-Applikation das Problem, dass der Speicher komplett voll läuft.

Ich habe ein Objekt vom Typ World. Dem füge ich 2 unterschiedliche Object3D Objekte hinzu.
Die Object3D Objekte erstelle ich in dem ich anhand einer Punktewolke und der Kanten die methode addTriangle aufrufe.
Einer der beiden Object3D objekte verwende ich als parent für den anderen.
Soweit kein Problem.

Das Problem entsteht, wenn ich eine Veränderung der OBjekte beginne.
Mein Vorgehen ist wie folgt:
1) Ich passe die Punktwolke an
2) entferne das ursprungsobjekte aus der Welt (world.removeObject(object3D))
3) ich entferne das ursprungsobjekt als kind des parent
4) initialisiere das object3d neu (object3D=new Object3D)
5) ich füge erneut Triangles dem Object3D hinzu (object3D.addTriangle(...)).
6) schlussendlich builde ich das Object3D neu (object3D.build())
7) ich weise dem Object3D wieder den parent zu
8 ) das object3D wird der World hinzugefügt (world.addObject(object3D))
9) die Scene wird refresh

wenn ich so vorgehe, wird mein Speicher vollständig ausgelastet, prinzipiell wird dies in einer Schleife mehrmals durchlaufen. Irgendwann bekomme ich die Exception OutOfMemoryError: Java heap space.
Was muss/kann ich tun, damit das alte object3D, nachdem ich es überschrieben habe, aus dem Speicher gelöscht wird?

Vielen Dank im vorraus und
Schönen Gruß

p.s.: auch diese Methoden haben nicht zum Erfolg geführt
- object3D.decompile(buffer);
- object3D.clearObject();
- object3D.unbuild();
- object3D = null;