I do recall that I ran into similar memory overheads
sometime last year. PickTool.INTERSECT_TEST
produces probably (much ???) less garbage than
PickTool_INTERSECT_FULL. Haven't examined this issue
in recent times.

Vaidya



>On Wed, 12 Feb 2003 11:43:40 +0000, Rob Nugent <[EMAIL PROTECTED]> wrote:

>Hello,
>
>I've recently started adding substantial quantities of extra geometry to my
>application, and I'm starting to see horrible garbage collection pauses,
>typically around *2 seconds* and sometimes more.
>
>(I'm ataching a screen shot to illustrate the complexity of my scene).
>
>I've tried to be careful not to generate garbage, so I investigated using
>'-Xrunhprof:heap=sites' to find the culprit. The results seem to point primarily
>at Shape3D.intersect(), although there is some evidence that
>Locale.pickAllSorted()is also an offender.
>
>I make *extensive* use of these routines each time a frame is rendered (tens of
>calls per frame), primarily in order to do collision detection. I use PickRays
>and PickSegments on my geometry based picks.
>
>Here's the hprof evidence from an extended run under Win2K:
>
>...
>TRACE 15431:
>
>javax.media.j3d.GeometryArrayRetained.intersectRay(GeometryArrayRetained.java:7182)
>
>javax.media.j3d.TriangleStripArrayRetained.intersect(TriangleStripArrayRetained.java:57)
>         javax.media.j3d.Shape3DRetained.intersect(Shape3DRetained.java:651)
>         javax.media.j3d.Shape3D.intersect(Shape3D.java:540)
>
>...
>TRACE 15430:
>
>javax.media.j3d.GeometryArrayRetained.intersectRay(GeometryArrayRetained.java:7181)
>
>javax.media.j3d.TriangleStripArrayRetained.intersect(TriangleStripArrayRetained.java:57)
>         javax.media.j3d.Shape3DRetained.intersect(Shape3DRetained.java:651)
>         javax.media.j3d.Shape3D.intersect(Shape3D.java:540)
>...
>TRACE 15460:
>
>javax.media.j3d.GeometryArrayRetained.intersectSegment(GeometryArrayRetained.java:7426)
>
>javax.media.j3d.TriangleStripArrayRetained.intersect(TriangleStripArrayRetained.java:83)
>         javax.media.j3d.Shape3DRetained.intersect(Shape3DRetained.java:634)
>         javax.media.j3d.Shape3D.intersect(Shape3D.java:579)
>...
>TRACE 15459:
>
>javax.media.j3d.GeometryArrayRetained.intersectSegment(GeometryArrayRetained.java:7425)
>
>javax.media.j3d.TriangleStripArrayRetained.intersect(TriangleStripArrayRetained.java:83)
>         javax.media.j3d.Shape3DRetained.intersect(Shape3DRetained.java:634)
>         javax.media.j3d.Shape3D.intersect(Shape3D.java:579)
>...
>SITES BEGIN (ordered by live bytes) Tue Feb 11 21:39:50 2003
>           percent         live       alloc'ed  stack class
>  rank   self  accum    bytes objs   bytes objs trace name
>     1 10.11% 10.11% 11393088 237356 796515264 16594068 15431 [D
>     2 10.11% 20.23% 11393088 237356 796515264 16594068 15430 [D
>     3  5.75% 25.98%  6474624 15564 6474624 15564  5738
>javax.media.j3d.QuadArrayRetained
>     4  4.15% 30.13%  4680048 97501 1834835136 38225732 15460 [D
>     5  4.15% 34.29%  4680048 97501 1834835136 38225732 15459 [D
>...
>
>Look at the 'Allocated Bytes' column and compare with the 'live bytes' column.
>This suggets to me that these routines have generated about *5 Gigabytes* of
>garbage during my run. The 'live' data seems to be occupying 30% of my heap, or
>about 30MBytes, which is a huge overhead.
>
>So, to my Sun Colleagues,
>
>1) Would you consider this to be a bug ?
>2) Is there anything that your could do about this ? I'm wondering if there
>might even be some temporary storage that you are allocating that you could
>release earlier(i.e. null out), which might give the generational garbage
>collector the opportunity to reclaim more efficiently.
>
>I have to say that the rendering and picking performance for my app is extremely
>good, but this garbage problem is starting to kill me.
>
>I also suspect from other tests that largish amounts of garbage are being
>generated at the following location:
>         javax.media.j3d.Transform3D.<init>(Transform3D.java:87)
>         javax.media.j3d.SceneGraphPath.<init>(SceneGraphPath.java:61)
>         javax.media.j3d.Picking.getSceneGraphPath(Picking.java:362)
>         javax.media.j3d.Picking.pickAllSorted(Picking.java:88)
>         javax.media.j3d.Locale.pickAllSorted(Locale.java:599)
>         rob.kit.KitUtilities.pick(KitUtilities.java:64)
>
>
>Rob
>--
>
>
>Rob Nugent
>Sun Microsystems, Southampton, UK
>
>[EMAIL PROTECTED]
>
>Tel: +44 (0) 1489 585503
>Fax: +44 (0) 1489 881363
>

===========================================================================
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".

Reply via email to