Hi,
A few months back I reported a problem I was seeing with running out of
memory. It has now escalated to become a show-stopping problem. I've
been doing some profiling to see where the resources are going.
I've attached a simple sample program that demonstrates one such case. I
make a Display, add a ScalarMap to it, then repeatedly setRange. When
using a DisplayImplJ3D the instance count of Object[] and many java3d
classes continues to grow. There is no such problem with the
DisplayImplJ2D. I know very little about java3d. I'm hoping there is
something VisAD can do to free up java3d resources and that this is not
a java3d bug that we have no control over.
Any ideas?
Thanks,
Doug
--
*----------------------------------------------------------------------*
| 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 |
*----------------------------------------------------------------------*
import visad.*;
import visad.java2d.*;
import visad.java3d.*;
import javax.swing.*;
public class MemoryTest {
public void init() {
try {
//System.out.println("make display");
//DisplayImplJ2D display = new DisplayImplJ2D( "test" );
DisplayImplJ3D display = new DisplayImplJ3D( "test" );
//DisplayImplJ3D display = new DisplayImplJ3D( "test", new
TwoDDisplayRendererJ3D() );
//System.out.println("make map");
ScalarMap xmap = new ScalarMap( RealType.Time, Display.XAxis );
//System.out.println("add map");
display.addMap(xmap);
int count = 0;
while ( true ) {
double now = (double) (System.currentTimeMillis() / 1000.0);
// System.out.println("step " + count++ + " now = " + now );
double then = now - 3600.0;
xmap.setRange(then, now);
//Thread.sleep(10);
}
}
catch (Throwable t) {
t.printStackTrace();
}
}
public static void main(String[] args) {
MemoryTest test = new MemoryTest();
test.init();
}
}