VisAD memory use

I have been investigating VisAD memory use by:
 
1. Working on VisAD's code for transforming data into depictions.
 
2. Using Bill Foote's Java Heap Analysis Tool (available from
http://java.sun.com/people/billf/heap/) to analyze memory use.
 
3. Email exchanges with the Java3D developers at Sun.
 
So far, the results of this effort are:
 
1. VisAD memory use has been greatly reduced, including
unnecessary copies of data, lingering references to
no-longer-needed arrays, and using byte[] arrays in place
of float[] arrays for colors.  I described this work in
a previous email and at least one user pointed out that
it didn't help.  This is because:
 
2. Most VisAD memory use is inside of Java3D.  For example,
large GeometryArrays are copied on the way into Java3D,
colors in byte[] arrays are converted to float[] arrays
internally in Java3D, and memory-efficient
IndexedTriangleStripArrays are converted to less-efficient
TriangleStripArrays internally in Java3D.
 
3. Java3D version 1.2 will fix some of these problems.  For
example, it will be possible to pass GeometryArrays into
Java3D without copying.
 
Please be assured that reducing memory use and increasing
speed are top priority issues for VisAD.
 
Cheers,
Bill
 
----------------------------------------------------------
Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI  53706
whibbard@xxxxxxxxxxxxx  608-263-4427  fax: 608-263-6738
http://www.ssec.wisc.edu/~billh/vis.html