Re: Resource Leak

Doug Lindholm wrote:
> 
> Hi Bill et al,
> 
> Adding display.disableAction() does not help in the MemoryTest example.
> However, if the map is to RGB instead of XAxis, disableAction() stops
> the leak.
> 
> Is there a good reason why disableAction() stops a RGB map setRange but
> not a XAxis map setRange? I'd like to be able stop this leak with
> disableAction on my non-visible displays.

This happens because the call to ScalarMap.setRange() for
XAxis, YAxis and ZAxis constructs a new AxisScale and adds
it to the Java3D scene graph. The disableAction() only
stops the re-transform of data into scene graph depictions.

It might help to do GraphicsModeControl.setScaleEnable(false)
(I'm not sure, as I haven't tried this) when your display is
not visible. 

Probably the best solution is to avoid making changes to
non-visible displays.

Bill

> Bill Hibbard wrote:
> >
> > Doug,
> >
> > I'm sure this Java3D bug report that Tom found is the cause
> > of your problem. There is no good way for VisAD to compensate
> > for this. However, your application can keep track of when
> > its DisplayImplJ3Ds are not visible in a Frame, and refrain
> > from calling ScalarMap.setRange() and other operations at
> > that time. You may be able to avoid most operartions simply
> > by calling DisplayImplJ3D.disableAction() when the display
> > is not visible.
> >
> > Good luck,
> > Bill
> >
> > Tom Whittaker wrote:
> > >
> > > I agree with Tom...I ran this on Windoz and the result was the same --
> > > it just took longer to gobble up the memory...
> > >
> > > Given Don's observation that if the window is displayed, the leak
> > > doesn't, well, leak, I cannot help wonder if this bug isn't related:
> > >
> > > http://developer.java.sun.com/developer/bugParade/bugs/4727054.html
> > >
> > > It says, in part:
> > >
> > > "Current architecture allocate message and send to MasterControl
> > > every time an attributes of scene graph changed.
> > > This is most like done by behavior thread.
> > >
> > > Under normal circumstance when window minizimize all Java3D threads
> > > are put to sleep so there is no message passing in the system
> > > from Behavior or other Java3D thread.
> > >
> > > However if there is a free running thread which continously change
> > > scene graph attributes the message will continously accumulate in
> > > the system and MasterControl thread will not wake up to process
> > > any message. This result in out of memory after a while.
> > >
> > > It is not recommend to do so even though window is not minimize
> > > since the thread may pump message to
> > > java3d system too fast that java3d can't handle. Thus can dramatically
> > > slow down the system. Besides, java3d can only change scene graph
> > > as fast as the frame rate. So if the transform is changed 10 times
> > > between each frame the first 9 time are ignored. The best way to
> > > do so is to use behavior thread which gaurantee synchronized with
> > > the Java3d system and frame rate.
> > >
> > > This bug will most likely mark "will not fix" later."
> > >
> > > tom
> > > --
> > > Tom Whittaker (tomw@xxxxxxxxxxxxx)
> > > University of Wisconsin-Madison
> > > Space Science and Engineering Center
> > > Cooperative Institute for Meteorological Satellite Studies
> > > Phone/VoiceMail: 608.262.2759
> >
> > --
> > ----------------------------------------------------------
> > Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI  53706
> > hibbard@xxxxxxxxxxxxxxxxx  608-263-4427  fax: 608-263-6738
> > http://www.ssec.wisc.edu/~billh/vis.html
> 
> --
> *----------------------------------------------------------------------*
> | Doug Lindholm, Software Engineer          |  E-mail: lind@xxxxxxxx   |
> | Research Applications Program             |   Phone: 303-497-8374    |
> | National Center for Atmospheric Research  |                          |
> | P.O. Box 3000                             |     There's no place     |
> | Boulder, Colorado 80307-3000              |        like $HOME        |
> *----------------------------------------------------------------------*

-- 
----------------------------------------------------------
Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI  53706
hibbard@xxxxxxxxxxxxxxxxx  608-263-4427  fax: 608-263-6738
http://www.ssec.wisc.edu/~billh/vis.html