Animation in Radar App

Hi Everyone,
        
        This application is a real time radar display showing an animated
sequence of data. For example, a 3 hr data loop in 10 minute steps. In
addition, the display updates every 10 minutes to include the latest
available data and removes any out-of-date data.

There appears to be a possible memory leak in this application. An
earlier mail from James Kelly âMemory leak in Radar Appâ covered some of
this. The replies were very useful. And we managed to improve the
performance by implementing the FieldImpl.setSample(false) suggestion.
However, this application can still eventually run out of memory.

>From running various scenarios I may have narrowed it down to the
animation process. It was observed that if the application was not
looping, i.e, playing, the memory usage would become stable and the
application ran for many days. However, with play enabled, the
application would run out of memory in a few hours or overnight. 

Before getting down to the specific details, I would like to ask if
anyone has observed something like this elsewhere? Or knows straight off
if it could be a java3d, VisAD, thread or implementation problem?

If still interested, read-on:

This application utilises the VisAD library. In particular,
AnimationControl, java3d.AnimationControlJ3D, DataReference, Field,
java3d.DisplayImplJ3D, java3d.DisplayRendererJ3D

We have a class called AnimationManager.java that manages the animation,
i.e, creates and controls the animation tool bar [backstep, play, stop,
forwardstep, slider and combo box]. 

When the animation needs to be updated it uses (among other things):
AnimationControl.setSet(newSet) 

 where the newSet [Gridded1DDoubleSet] is obtained by iteration over a
Vector of DataReferences and extracting the domain set from each Field
to build a new set of dates. [ Data data = dataReference.getData();
Field field = (Field)data; ]

The data of each DataReference is created and updated by another class
(1 instance per radar). The availability of new data is checked every
minute and added to the field. If the data has changed, a call to
DataReference.setData(Field) is made. Every 10 minutes, data older than
3 hours is removed; again updating the Field and setData.

If anyone has any thoughts on the matter and/or needs more information,
let me know.

cheers,

Susan Fisher

Meteorological Systems Section

Bureau of Meteorology

Tel: [+61] 3 9669 4577

Email: s.fisher@xxxxxxxxxx


==============================================================================
To unsubscribe visad, visit:
http://www.unidata.ucar.edu/mailing-list-delete-form.html
==============================================================================