Could it be that the compiling a BranchGroup creates a copy of the Shaped3d
(retained) and its appearance? Should I re-compile the shape after setting
its appearance to new Appearance() then drop the reference?
Ack
> ----------
> From: David[SMTP:[EMAIL PROTECTED]]
> Reply To: Discussion list for Java 3D API
> Sent: Wednesday, September 06, 2000 7:49 AM
> To: [EMAIL PROTECTED]
> Subject: Re: [JAVA3D] Memory Leak? More Info
>
> I am recursively setting the Appearance to new Apearance() now for all my
> shape nodes:
>
>
> /**
> * Sets the appearance of every shape to a new appearance so they
> * can release shared items and be garbage collected
> */
> private void resetAppearance( Node node ) {
>
> if (node instanceof Group) {
>
> Group g = (Group)node;
> for (int i=0;i<g.numChildren();i++) {
> Node n = g.getChild(i);
> resetAppearance(n);
> }
>
> } else if (node instanceof Shape3D) {
>
> Shape3D s = (Shape3D)node;
> s.setAppearance(new Appearance());
>
> }
> }
>
> It helped but not enough. Here is more info:
>
> 2 2.89% 9.51% 257904 3582 257904 3582 6676
> javax.media.j3d.Shape3DRetained
> 3 2.42% 11.93% 216040 2455 315568 3586 5906
> javax.media.j3d.TriangleStripArrayRetained
> 4 1.83% 13.75% 163512 2271 257904 3582 5959
> javax.media.j3d.Shape3DRetained
>
> Note that item 4 was allocated 3582 times, with only 2271 remaining.
> Clearly its being deallocated. But item 2 was allocated 3582 times and is
> never being allocated.
>
> Item 4 is:
>
> TRACE 5959:
> javax.media.j3d.Shape3D.createRetained(Shape3D.java:154)
> javax.media.j3d.SceneGraphObject.<init>(SceneGraphObject.java:60)
> javax.media.j3d.Node.<init>(Node.java:123)
> javax.media.j3d.Leaf.<init>(Leaf.java:31)
> javax.media.j3d.Shape3D.<init>(Shape3D.java:116)
>
> com.xith.java3d.geometry.terrain.mesher.TriangleMesher.getMesh(TriangleMes
> he
> r.java:333)
>
> The above is my code call to make the shape, this makes sense.
>
>
> TRACE 6676:
> javax.media.j3d.Shape3DRetained.setLive(Shape3DRetained.java:1102)
> javax.media.j3d.GroupRetained.doSetLive(GroupRetained.java:1475)
> javax.media.j3d.BranchGroupRetained.setLive(BranchGroupRetained.java:101)
> javax.media.j3d.GroupRetained.checkSetLive(GroupRetained.java:1009)
> javax.media.j3d.GroupRetained.checkSetLive(GroupRetained.java:869)
> javax.media.j3d.GroupRetained.doAddChild(GroupRetained.java:431)
>
> Looks like setLive is allocated a Shape3DRetained for every Shape3d I
> make.
> Is this a compiled geometry? I don't know, but its NEVER going away.
>
> Any help is appreciated.
>
>
> ----- Original Message -----
> From: David <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Wednesday, September 06, 2000 7:15 AM
> Subject: [JAVA3D] Memory Leak?
>
>
> It looks like my shapes are not being released to garbage collection after
> a
> detach:
>
> TRACE 6671:
> javax.media.j3d.Shape3DRetained.setLive(Shape3DRetained.java:1102)
> javax.media.j3d.GroupRetained.doSetLive(GroupRetained.java:1475)
> javax.media.j3d.BranchGroupRetained.setLive(BranchGroupRetained.java:101)
> javax.media.j3d.GroupRetained.checkSetLive(GroupRetained.java:1009)
> javax.media.j3d.GroupRetained.checkSetLive(GroupRetained.java:869)
> javax.media.j3d.GroupRetained.doAddChild(GroupRetained.java:431)
>
>
> SITES BEGIN (ordered by live bytes) Wed Sep 06 07:02:48 2000
> percent live alloc'ed stack class
> rank self accum bytes objs bytes objs trace name
> 1 7.01% 7.01% 591892 157 591892 157 1 [I
> 2 3.33% 10.34% 281304 3907 281304 3907 6671
> javax.media.j3d.Shape3DRetained
>
>
> Notice that there are as may live objects as were ever alocated? This
> means
> that never, in the course of my run, did one Shape3DRetained get released.
> I am dropping my reference to them after detaching, so I would expect them
> to go away. I know there is a bug with Shapes not being released with
> shared Appearance (4182781 Shape3D memory not freed when unassigned if
> associated appearance object isalive ). But I assumed that was a shared
> Appearance() object, not a sub object. All my shapes share material and
> texture objects, which is necessary and correct that they do so. Don't I
> just detach branchgroups and let them die? or do I need to make them
> "unalive" somehow?
>
> By the way... when is the next version of Java3d going to be made
> available?
>
> Dave Yazel
>
> ==========================================================================
> =
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
> body
> of the message "signoff JAVA3D-INTEREST". For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".
>
> ==========================================================================
> =
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
> body
> of the message "signoff JAVA3D-INTEREST". For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".
>
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".