[vtkusers] java memory

Sebastien Jourdain sebastien.jourdain at kitware.com
Mon Apr 4 09:11:32 EDT 2011


Hi guys,

I did not encourage the use of Delete but instead a synchronized
version of the VTK garbage collector across the user threads.

Seb

On Sun, Apr 3, 2011 at 8:49 PM, Mark Roden <mmroden at gmail.com> wrote:
> Hi Sebastien,
>
> I think Jon's point is that even when he's following your
> instructions, the memory is only being freed when he explicitly calls
> delete.
>
> So he broke up his three function call into separate lines:
>
>    vtkPointData pointData = image.GetPointData();
>    vtkDataArray scalars = pointData.GetScalars();
>    scalars.FillComponent(0, 0);
>
> And even so, the function leaks.
>
>> However, if I add the following 2 lines I don't leak memory
>   scalars.Delete();
>   pointData.Delete();
>
> So to avoid the leak, he must explicitly call delete.   As a sometime
> Java programmer, I learned that being forced to call .Delete to free
> memory is very much against the entire paradigm of Java memory
> management.  I think that's the crux of Jon's question: will he have
> to explicitly call .Delete in order to handle memory?
>
> Best Regards,
> Mark
>
> Hi Jonathan,
>
> I'll try my best to explain what happen here.
>
> When you do
>
> image.GetPointData(); // 1 object
> or pointData.GetScalars(); // 1 object
> or image.GetPointData().GetScalars(); // 2 objects
>
> You are getting a Java object that increase the reference count of the
> C++ object.
> As nothing decrease those reference count to 0, they get never deleted
> from the C++ layer.
> To make sure they get deleted, you either need to
> call delete on them, or simply call the VTK garbage (vtkGlobalJavaHash.GC()).
> The VTK garbage collector will check all Java objects from VTK and
> will decrease their reference count if Java is not referencing them
> anymore.
>
> Seb
>
>
> On Sun, Apr 3, 2011 at 1:23 PM, Jonathan Morra <jonmorra at gmail.com> wrote:
>> Another problem.  I wrote this small program and it leaks memory.  Can
>> someone please explain why this program leaks memory.  I call new once, and
>> then call delete on that object, yet I still leak memory, could someone
>> please explain what's going on?  Is this a bug?
>> import vtk.*;
>> public class VTKMemoryLeak {
>>     static {
>>         System.loadLibrary("vtkCommonJava");
>>         System.loadLibrary("vtkFilteringJava");
>>         System.loadLibrary("vtkGenericFilteringJava");
>>         System.loadLibrary("vtkGraphicsJava");
>>         System.loadLibrary("vtkHybridJava");
>>         System.loadLibrary("vtkImagingJava");
>>         System.loadLibrary("vtkIOJava");
>>         System.loadLibrary("vtkRenderingJava");
>>         System.loadLibrary("vtkVolumeRenderingJava");
>>         System.loadLibrary("vtkWidgetsJava");
>>         System.loadLibrary("vtkgdcmJava");
>>     }
>>     public static void main(String[] args) {
>>         for (int i=0; i<15; i++) {
>>             vtkImageData image = new vtkImageData();
>>             int[] extent = {0, 511, 0, 511, 0, 255};
>>             double[] origin = {0, 0, 0};
>>             double[] spacing = {1, 1, 3};
>>             image.SetExtent(extent);
>>             image.SetOrigin(origin);
>>             image.SetSpacing(spacing);
>>             image.SetScalarTypeToShort();
>>             image.AllocateScalars();
>>             image.GetPointData().GetScalars().FillComponent(0, 0);
>>             image.Delete();
>>         }
>>     }
>> }
>> If I remove image.GetPointData().GetScalars().FillComponent(0, 0); and
>> instead add the following, I still leak memory
>>             vtkPointData pointData = image.GetPointData();
>>             vtkDataArray scalars = pointData.GetScalars();
>>             scalars.FillComponent(0, 0);
>> However, if I add the following 2 lines I don't leak memory
>>             scalars.Delete();
>>             pointData.Delete();
>>
>> Why do I have to call Delete on objects I don't new?  This seems to have all
>> the makings of a memory leak on the VTK Java wrapper.  Could someone please
>> tell me what's going on?
>> On Wed, Mar 30, 2011 at 5:47 AM, Sebastien Jourdain
>> <sebastien.jourdain at kitware.com> wrote:
>>>
>>> Hi Jonathan,
>>>
>>> I will try to look closer into this weekend, for your other question
>>> about Java+VTK project,
>>> you should start a new thread with that in subject.
>>> Although, I did wrote some but they are not all available online.
>>>
>>> Seb
>>>
>>> On Tue, Mar 29, 2011 at 7:38 PM, Jonathan Morra <jonmorra at gmail.com>
>>> wrote:
>>> > I will try and write something small to highlight the problems.
>>> >  However,
>>> > two places where I currently must execute vtk code outside the EDT is
>>> > the
>>> > following.
>>> > 1.  My program reads data from disk in the form of a vtkPolyData, and I
>>> > want
>>> > to store the data as binary vtkImageData's.  This conversion from
>>> > vtkPolyData to vtkImageData is time consuming, and will freeze the UI if
>>> > I
>>> > do it on the EDT.  Here is an example snippet.
>>> >         ExecutorService loadingThreadPool =
>>> >
>>> > Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
>>> >         for (int i = 0; i < numOrgans; i++) {
>>> >             vtkPolyData data = thePolyReader.GetOutput(i);
>>> >             vtkPolyData dataCopy = new vtkPolyData();
>>> >             dataCopy.DeepCopy(data);
>>> >             String organName = // get organ name
>>> >             if (organName == null || organName.isEmpty()) {
>>> >                 dataCopy.Delete();
>>> >                 continue;
>>> >             }
>>> >             loadingThreadPool.submit(new LoadOneROI(dataCopy,
>>> > organName));
>>> >         }
>>> >     private class LoadOneROI extends Thread {
>>> >         private String organName;
>>> >         private vtkPolyData data;;
>>> >         public LoadOneROI(vtkPolyData data, String organName) {
>>> >             this.data = data;
>>> >             this.organName = organName;
>>> >         }
>>> >         public void run() {
>>> >             vtkImageData theImage = createBinaryImage(data);
>>> >             ENV.getInstance().getDataManager().setOrgan(organName,
>>> > theImage);
>>> >             data.Delete();
>>> >         }
>>> >     }
>>> > public vtkImageData createBinaryImage(vtkPolyData data) {
>>> >         vtkLinearExtrusionFilter extruder = new
>>> > vtkLinearExtrusionFilter();
>>> >         extruder.SetInput(data);
>>> >         extruder.Update();
>>> >         vtkPolyData extruderOutput = extruder.GetOutput();
>>> >         extruder.Delete();
>>> >         vtkImageData binaryOrgan = // Get blank binary image of correct
>>> > size
>>> >         vtkPolyDataToImageStencil pol2Stenc = new
>>> > vtkPolyDataToImageStencil();
>>> >         pol2Stenc.SetTolerance(0);
>>> >         pol2Stenc.SetInput(extruderOutput);
>>> >         pol2Stenc.SetInformationInput(binaryOrgan);
>>> >         pol2Stenc.Update();
>>> >         vtkImageStencilData pol2StencOutput = pol2Stenc.GetOutput();
>>> >         extruderOutput.Delete();
>>> >         pol2Stenc.Delete();
>>> >         vtkImageStencil stencil = new vtkImageStencil();
>>> >         stencil.SetInput(binaryOrgan);
>>> >         stencil.ReverseStencilOn();
>>> >         stencil.SetStencil(pol2StencOutput);
>>> >         stencil.Update();
>>> >         pol2StencOutput.Delete();
>>> >         final vtkImageData stencilOutput = stencil.GetOutput();
>>> >         stencil.Delete();
>>> >         return stencilOutput;
>>> >     }
>>> > 2.  I need to be able to create a vtkPolyData from a binary
>>> > vtkImageData,
>>> > and this also can take too long (depending on the complexity and size of
>>> > the
>>> > vtkPolyData) and will cause the UI to hang if it's done on the EDT.
>>> >     private class OrganViewer extends SwingWorker<vtkPolyData, Void> {
>>> >         private String organ;
>>> >         public OrganViewer(String organ) {
>>> >             this.organ = organ;
>>> >         }
>>> >         public String getOrgan() {
>>> >             return organ;
>>> >         }
>>> >         public vtkPolyData doInBackground() {
>>> >             currentlyBuildingModes.add(organ);
>>> >             vtkPolyData organMesh = getOrganMesh(organ);
>>> >             return organMesh;
>>> >         }
>>> >         public void done() {
>>> >             vtkPolyData organMesh = null;
>>> >             try {
>>> >                 organMesh = get();
>>> >             }
>>> >             catch (Exception e) {
>>> >                 // If this gets here that means that the
>>> >                 // swing worker was cancelled, so in that case
>>> >                 // just return
>>> >                 return;
>>> >             }
>>> >             vtkPolyDataMapper mapper = new vtkPolyDataMapper();
>>> >             mapper.SetInput(organMesh);
>>> >             vtkActor actor = new vtkActor();
>>> >             actor.SetMapper(mapper);
>>> >             actor.GetProperty().SetRepresentationToSurface();
>>> >             renWin.GetRenderer().AddActor(actor);
>>> >             currentActors.put(organ, actor);
>>> >             currentlyBuildingModes.remove(organ);
>>> >             Render();
>>> >         }
>>> >     }
>>> > public synchronized vtkPolyData getOrganMesh(String organ) {
>>> >         vtkMarchingCubes marching = new vtkMarchingCubes();
>>> >         vtkImageData image = binaryOrgans.get(organ);
>>> >         marching.SetInput(image);
>>> >         marching.ComputeGradientsOff();
>>> >         marching.ComputeNormalsOff();
>>> >         marching.ComputeScalarsOff();
>>> >         marching.SetValue(0, 0.5);
>>> >         marching.Update();
>>> >         vtkPolyData marchingOutput = marching.GetOutput();
>>> >         if (marchingOutput.GetNumberOfPoints() == 0)
>>> >             return marchingOutput;
>>> >
>>> >         // The decimation makes the render time much faster
>>> >         vtkDecimatePro decimate = new vtkDecimatePro();
>>> >         decimate.SetInput(marchingOutput);
>>> >         decimate.SetTargetReduction(0.6);
>>> >         decimate.Update();
>>> >         vtkPolyData decimateOutput = decimate.GetOutput();
>>> >         vtkSmoothPolyDataFilter smooth = new vtkSmoothPolyDataFilter();
>>> >         smooth.SetInput(decimateOutput);
>>> >         smooth.SetNumberOfIterations(200);
>>> >         smooth.BoundarySmoothingOn();
>>> >         smooth.FeatureEdgeSmoothingOn();
>>> >         smooth.SetRelaxationFactor(0.1);
>>> >         smooth.Update();
>>> >         vtkPolyData smoothOutput = smooth.GetOutput();
>>> >         return smoothOutput;
>>> >     }
>>> > There are more instances like this, but these are two main ones.  But
>>> > again,
>>> > is there any project that uses Java + VTK?  I would be really curious to
>>> > see
>>> > one.
>>> > On Tue, Mar 29, 2011 at 4:26 PM, Sebastien Jourdain
>>> > <sebastien.jourdain at kitware.com> wrote:
>>> >>
>>> >> Multi-threading is not an easy thing to deal with and this is not
>>> >> related specifically to VTK and Java.
>>> >> An easy fix, is to execute all VTK code (creation, update, delete)
>>> >> inside the EDT. But this brings the question: Why do you create VTK
>>> >> object outside the EDT. If you share that peace of code, I might be
>>> >> able to fix it. Although you need to be sure that's the only place
>>> >> where you do a "new vtkXXX() / b.SetXXX()"  outside the EDT.
>>> >>
>>> >> A better approach to everyone could be to create a very basic code
>>> >> sample that highlight the problem with memory and GC that I could fix
>>> >> and provide as a demonstration application for the community.
>>> >>
>>> >> Seb
>>> >>
>>> >>
>>> >> On Tue, Mar 29, 2011 at 7:09 PM, Jonathan Morra <jonmorra at gmail.com>
>>> >> wrote:
>>> >> > Honestly, I'm having a lot of trouble with this.  Are there any
>>> >> > sizable projects out there that use Java + VTK successfully that I
>>> >> > might
>>> >> > be
>>> >> > able to have a look at?
>>> >> >
>>> >> > On Tue, Mar 29, 2011 at 2:26 PM, Sebastien Jourdain
>>> >> > <sebastien.jourdain at kitware.com> wrote:
>>> >> >>
>>> >> >> If you have few place where you handle VTK object outside the EDT,
>>> >> >> then you should use a lock (cf. java.util.concurrency) to make sure
>>> >> >> that either the GC or a working thread is running but nether both.
>>> >> >> As
>>> >> >> the GC is going to run in the EDT, you don't care with the code that
>>> >> >> is already handle inside the EDT, just the code that create
>>> >> >> vtkObjects
>>> >> >> inside another thread.
>>> >> >>
>>> >> >> Although, depending on your code design, a call to .Delete() might
>>> >> >> be
>>> >> >> fine if you know that you won't induce any concurrency between an
>>> >> >> EDT
>>> >> >> that will try to render images (call update on each filter of the
>>> >> >> pipeline) and another thread that is removing an object that is
>>> >> >> referenced inside that pipeline.
>>> >> >>
>>> >> >> Seb
>>> >> >>
>>> >> >> On Tue, Mar 29, 2011 at 4:16 PM, Jonathan Morra <jonmorra at gmail.com>
>>> >> >> wrote:
>>> >> >> > With all this in mind (that I'm using a multithreaded
>>> >> >> > environment).
>>> >> >> >  Do
>>> >> >> > you
>>> >> >> > think it makes more sense to use vtk's garbage collector or just
>>> >> >> > call
>>> >> >> > .Delete() on every vtk data object I create?
>>> >> >> >
>>> >> >> > On Tue, Mar 29, 2011 at 12:05 PM, Sebastien Jourdain
>>> >> >> > <sebastien.jourdain at kitware.com> wrote:
>>> >> >> >>
>>> >> >> >> Hi Jonathan,
>>> >> >> >>
>>> >> >> >> > I definitely use one thread to create vtkObjects and then other
>>> >> >> >> > threads
>>> >> >> >> > access them in a
>>> >> >> >> > thread safe manner.  I thought this was OK.
>>> >> >> >>
>>> >> >> >> This is OK, but if your objects are part of the pipeline which is
>>> >> >> >> rendered, then all the VTK objects (of that pipeline) should be
>>> >> >> >> accessed through the EDT.
>>> >> >> >>
>>> >> >> >> That's precisely why the delete and most of the calls should be
>>> >> >> >> done
>>> >> >> >> in
>>> >> >> >> the EDT.
>>> >> >> >> But if you have a processing loop (Not the EDT) that create a set
>>> >> >> >> of
>>> >> >> >> VTK object and you call the GC in the EDT, you have a concurrency
>>> >> >> >> issue here... That's the only thing that I'm saying.
>>> >> >> >>
>>> >> >> >> Seb
>>> >> >> >>
>>> >> >> >> On Tue, Mar 29, 2011 at 2:55 PM, Jonathan Morra
>>> >> >> >> <jonmorra at gmail.com>
>>> >> >> >> wrote:
>>> >> >> >> > Sorry, I forgot to mention that in all my current test cases
>>> >> >> >> > I'm
>>> >> >> >> > calling
>>> >> >> >> > the
>>> >> >> >> > method cleanSystem(false), so I'm never
>>> >> >> >> > calling vtkGlobalJavaHash.DeleteAll();.  In fact you can see in
>>> >> >> >> > the
>>> >> >> >> > stack
>>> >> >> >> > trace the following line
>>> >> >> >> > vtk.vtkGlobalJavaHash.GC()I+73
>>> >> >> >> > so I'm definitely not calling DeleteAll().  For threads, I was
>>> >> >> >> > under
>>> >> >> >> > the
>>> >> >> >> > impression that vtkGlobalJavaHash.GC() should always be called
>>> >> >> >> > from
>>> >> >> >> > the
>>> >> >> >> > EDT
>>> >> >> >> > if I have any objects that are used for rendering (which I have
>>> >> >> >> > a
>>> >> >> >> > bunch
>>> >> >> >> > of).
>>> >> >> >> >  I spent a lot of time making this program work in a
>>> >> >> >> > multithreaded
>>> >> >> >> > environment.  I separated all calls to any rendering objects
>>> >> >> >> > and
>>> >> >> >> > do
>>> >> >> >> > them
>>> >> >> >> > in
>>> >> >> >> > the EDT.  VTK calls to non-rendering objects I do in other
>>> >> >> >> > threads
>>> >> >> >> > sometimes.  Are you saying that if a VTK object is created in a
>>> >> >> >> > given
>>> >> >> >> > thread, it must also be disposed of in that same thread?  I
>>> >> >> >> > definitely
>>> >> >> >> > use
>>> >> >> >> > one thread to create vtkObjects and then other threads access
>>> >> >> >> > them
>>> >> >> >> > in
>>> >> >> >> > a
>>> >> >> >> > thread safe manner.  I thought this was OK.
>>> >> >> >> >
>>> >> >> >> > On Tue, Mar 29, 2011 at 11:41 AM, Sebastien Jourdain
>>> >> >> >> > <sebastien.jourdain at kitware.com> wrote:
>>> >> >> >> >>
>>> >> >> >> >> Do you call that method ? This will remove all the VTK object
>>> >> >> >> >> that
>>> >> >> >> >> have been created through Java regardless if you are still
>>> >> >> >> >> using
>>> >> >> >> >> them
>>> >> >> >> >> or not.
>>> >> >> >> >>
>>> >> >> >> >> > vtkGlobalJavaHash.DeleteAll();
>>> >> >> >> >>
>>> >> >> >> >> Have you got an idea in which thread you are using the VTK
>>> >> >> >> >> objects ?
>>> >> >> >> >> If not, you do have a problem. VTK is not thread safe
>>> >> >> >> >> therefore
>>> >> >> >> >> you
>>> >> >> >> >> should make sure (like swing) that any VTK code get executed
>>> >> >> >> >> in
>>> >> >> >> >> the
>>> >> >> >> >> EDT. (creation, setting, update...)
>>> >> >> >> >>
>>> >> >> >> >> Seb
>>> >> >> >> >>
>>> >> >> >> >> PS: On the other hand, if you know what you are doing, you can
>>> >> >> >> >> use
>>> >> >> >> >> VTK
>>> >> >> >> >> in a multi-threaded environment with sometime some
>>> >> >> >> >> synchronization
>>> >> >> >> >> with the EDT.
>>> >> >> >> >>
>>> >> >> >> >> On Tue, Mar 29, 2011 at 2:26 PM, Jonathan Morra
>>> >> >> >> >> <jonmorra at gmail.com>
>>> >> >> >> >> wrote:
>>> >> >> >> >> > OK, I'm still getting a lot of JNI errors when I run the
>>> >> >> >> >> > vtkGarbageCollector
>>> >> >> >> >> > that look like the following.  Do you have any idea what's
>>> >> >> >> >> > going
>>> >> >> >> >> > on
>>> >> >> >> >> > here?
>>> >> >> >> >> > Here is the code that it is being called from
>>> >> >> >> >> > private static class MyVTKClean implements Runnable {
>>> >> >> >> >> >         private boolean runVTKDelete;
>>> >> >> >> >> >         private int numDelete;
>>> >> >> >> >> >         public MyVTKClean(boolean runVTKDelete) {
>>> >> >> >> >> >             this.runVTKDelete = runVTKDelete;
>>> >> >> >> >> >         }
>>> >> >> >> >> >         public synchronized void run() {
>>> >> >> >> >> >             if (runVTKDelete)
>>> >> >> >> >> >                 numDelete = vtkGlobalJavaHash.DeleteAll();
>>> >> >> >> >> >             else
>>> >> >> >> >> >                 numDelete = vtkGlobalJavaHash.GC();
>>> >> >> >> >> >         }
>>> >> >> >> >> >         public int getNumDelete() {
>>> >> >> >> >> >             return numDelete;
>>> >> >> >> >> >         }
>>> >> >> >> >> >     }
>>> >> >> >> >> >
>>> >> >> >> >> > // I think the VTK clean up has to run
>>> >> >> >> >> >     // on the EDT, so we'll do that here
>>> >> >> >> >> >     public synchronized static void cleanSystem(boolean
>>> >> >> >> >> > runVTKDelete)
>>> >> >> >> >> > {
>>> >> >> >> >> >         System.gc();
>>> >> >> >> >> >         System.runFinalization();
>>> >> >> >> >> >         MyVTKClean run = new MyVTKClean(runVTKDelete);
>>> >> >> >> >> >         // I'm not sure what to do here, it crashes
>>> >> >> >> >> > sometimes
>>> >> >> >> >> >         // I honestly think we're going to have to go
>>> >> >> >> >> > through
>>> >> >> >> >> > the
>>> >> >> >> >> > program
>>> >> >> >> >> >         // and just manually manage all our own memory.
>>> >> >> >> >> >         SwingUtilities.invokeLater(run);
>>> >> >> >> >> >     }
>>> >> >> >> >> > Here is a reproduction of the JNI VTK error.
>>> >> >> >> >> > #
>>> >> >> >> >> > # A fatal error has been detected by the Java Runtime
>>> >> >> >> >> > Environment:
>>> >> >> >> >> > #
>>> >> >> >> >> > #  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at
>>> >> >> >> >> > pc=0x000020001ba29400,
>>> >> >> >> >> > pid=5420, tid=5264
>>> >> >> >> >> > #
>>> >> >> >> >> > # JRE version: 6.0_24-b07
>>> >> >> >> >> > # Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed
>>> >> >> >> >> > mode
>>> >> >> >> >> > windows-amd64 compressed oops)
>>> >> >> >> >> > # Problematic frame:
>>> >> >> >> >> > # C  0x000020001ba29400
>>> >> >> >> >> > #
>>> >> >> >> >> > # If you would like to submit a bug report, please visit:
>>> >> >> >> >> > #   http://java.sun.com/webapps/bugreport/crash.jsp
>>> >> >> >> >> > # The crash happened outside the Java Virtual Machine in
>>> >> >> >> >> > native
>>> >> >> >> >> > code.
>>> >> >> >> >> > # See problematic frame for where to report the bug.
>>> >> >> >> >> > #
>>> >> >> >> >> > ---------------  T H R E A D  ---------------
>>> >> >> >> >> > Current thread (0x0000000007e4c000):  JavaThread
>>> >> >> >> >> > "AWT-EventQueue-0"
>>> >> >> >> >> > [_thread_in_native, id=5264,
>>> >> >> >> >> > stack(0x0000000008ee0000,0x0000000008fe0000)]
>>> >> >> >> >> > siginfo: ExceptionCode=0xc0000005,
>>> >> >> >> >> > ExceptionInformation=0x0000000000000008
>>> >> >> >> >> > 0x000020001ba29400
>>> >> >> >> >> > Registers:
>>> >> >> >> >> > RAX=0x000007fee9a7ffff, RBX=0x0000000007caf0c8,
>>> >> >> >> >> > RCX=0x0000000007c00d90,
>>> >> >> >> >> > RDX=0x0000000008fde720
>>> >> >> >> >> > RSP=0x0000000008fde608, RBP=0x0000000007caf0d8,
>>> >> >> >> >> > RSI=0x000000005976e7a0,
>>> >> >> >> >> > RDI=0x0000000007cafff0
>>> >> >> >> >> > R8=0x0000000000000000, R9=0x0000000000000009,
>>> >> >> >> >> > R10=0x0000000006ba18b0,
>>> >> >> >> >> > R11=0x0000000007cafff0
>>> >> >> >> >> > R12=0x0000000007caf0d8, R13=0x0000000008fde720,
>>> >> >> >> >> > R14=0x0000000007bdd2d0,
>>> >> >> >> >> > R15=0x0000000000000002
>>> >> >> >> >> > RIP=0x000020001ba29400, EFLAGS=0x0000000000010246
>>> >> >> >> >> > Register to memory mapping:
>>> >> >> >> >> > RAX=0x000007fee9a7ffff
>>> >> >> >> >> > 0x000007fee9a7ffff is pointing to unknown location
>>> >> >> >> >> > RBX=0x0000000007caf0c8
>>> >> >> >> >> > 0x0000000007caf0c8 is pointing to unknown location
>>> >> >> >> >> > RCX=0x0000000007c00d90
>>> >> >> >> >> > 0x0000000007c00d90 is pointing to unknown location
>>> >> >> >> >> > RDX=0x0000000008fde720
>>> >> >> >> >> > 0x0000000008fde720 is pointing into the stack for thread:
>>> >> >> >> >> > 0x0000000007e4c000
>>> >> >> >> >> > "AWT-EventQueue-0" prio=6 tid=0x0000000007e4c000 nid=0x1490
>>> >> >> >> >> > runnable
>>> >> >> >> >> > [0x0000000008fde000]
>>> >> >> >> >> >    java.lang.Thread.State: RUNNABLE
>>> >> >> >> >> > RSP=0x0000000008fde608
>>> >> >> >> >> > 0x0000000008fde608 is pointing into the stack for thread:
>>> >> >> >> >> > 0x0000000007e4c000
>>> >> >> >> >> > "AWT-EventQueue-0" prio=6 tid=0x0000000007e4c000 nid=0x1490
>>> >> >> >> >> > runnable
>>> >> >> >> >> > [0x0000000008fde000]
>>> >> >> >> >> >    java.lang.Thread.State: RUNNABLE
>>> >> >> >> >> > RBP=0x0000000007caf0d8
>>> >> >> >> >> > 0x0000000007caf0d8 is pointing to unknown location
>>> >> >> >> >> > RSI=0x000000005976e7a0
>>> >> >> >> >> > 0x000000005976e7a0 is pointing to unknown location
>>> >> >> >> >> > RDI=0x0000000007cafff0
>>> >> >> >> >> > 0x0000000007cafff0 is pointing to unknown location
>>> >> >> >> >> > R8 =0x0000000000000000
>>> >> >> >> >> > 0x0000000000000000 is pointing to unknown location
>>> >> >> >> >> > R9 =0x0000000000000009
>>> >> >> >> >> > 0x0000000000000009 is pointing to unknown location
>>> >> >> >> >> > R10=0x0000000006ba18b0
>>> >> >> >> >> > 0x0000000006ba18b0 is pointing to unknown location
>>> >> >> >> >> > R11=0x0000000007cafff0
>>> >> >> >> >> > 0x0000000007cafff0 is pointing to unknown location
>>> >> >> >> >> > R12=0x0000000007caf0d8
>>> >> >> >> >> > 0x0000000007caf0d8 is pointing to unknown location
>>> >> >> >> >> > R13=0x0000000008fde720
>>> >> >> >> >> > 0x0000000008fde720 is pointing into the stack for thread:
>>> >> >> >> >> > 0x0000000007e4c000
>>> >> >> >> >> > "AWT-EventQueue-0" prio=6 tid=0x0000000007e4c000 nid=0x1490
>>> >> >> >> >> > runnable
>>> >> >> >> >> > [0x0000000008fde000]
>>> >> >> >> >> >    java.lang.Thread.State: RUNNABLE
>>> >> >> >> >> > R14=0x0000000007bdd2d0
>>> >> >> >> >> > 0x0000000007bdd2d0 is pointing to unknown location
>>> >> >> >> >> > R15=0x0000000000000002
>>> >> >> >> >> > 0x0000000000000002 is pointing to unknown location
>>> >> >> >> >> >
>>> >> >> >> >> > Top of Stack: (sp=0x0000000008fde608)
>>> >> >> >> >> > 0x0000000008fde608:   000007fee995d99b 0000000007caf0c0
>>> >> >> >> >> > 0x0000000008fde618:   0000000007caf0c0 000000005976e7a0
>>> >> >> >> >> > 0x0000000008fde628:   0000000000000000 000000005976e7a0
>>> >> >> >> >> > 0x0000000008fde638:   0000000007caf0b0 000000005976e7a0
>>> >> >> >> >> > 0x0000000008fde648:   0000000007caf0b0 0000000000000000
>>> >> >> >> >> > 0x0000000008fde658:   0000000008fde720 00000000bb8bd928
>>> >> >> >> >> > 0x0000000008fde668:   0000000000000000 0000000000000000
>>> >> >> >> >> > 0x0000000008fde678:   000007fee9960ab3 0000000008fde720
>>> >> >> >> >> > 0x0000000008fde688:   0000000007cafff0 0000000000000000
>>> >> >> >> >> > 0x0000000008fde698:   0000000000000000 0000000007e4c000
>>> >> >> >> >> > 0x0000000008fde6a8:   0000000008fde950 00000000bb8bd928
>>> >> >> >> >> > 0x0000000008fde6b8:   0000000000000000 0000000058511290
>>> >> >> >> >> > 0x0000000008fde6c8:   000007fee9960e6f 0000000058511290
>>> >> >> >> >> > 0x0000000008fde6d8:   0000000008fde928 00000000bca11e68
>>> >> >> >> >> > 0x0000000008fde6e8:   0000000002407f03 00000000c0c06c78
>>> >> >> >> >> > 0x0000000008fde6f8:   0000000008fde700 000000006df196a0
>>> >> >> >> >> > Instructions: (pc=0x000020001ba29400)
>>> >> >> >> >> > 0x000020001ba293f0:
>>> >> >> >> >> > [error occurred during error reporting (printing registers,
>>> >> >> >> >> > top
>>> >> >> >> >> > of
>>> >> >> >> >> > stack,
>>> >> >> >> >> > instructions near pc), id 0xc0000005]
>>> >> >> >> >> > Stack: [0x0000000008ee0000,0x0000000008fe0000],
>>> >> >> >> >> >  sp=0x0000000008fde608,
>>> >> >> >> >> >  free space=1017k
>>> >> >> >> >> > Native frames: (J=compiled Java code, j=interpreted, Vv=VM
>>> >> >> >> >> > code,
>>> >> >> >> >> > C=native
>>> >> >> >> >> > code)
>>> >> >> >> >> > C  0x000020001ba29400
>>> >> >> >> >> > Java frames: (J=compiled Java code, j=interpreted, Vv=VM
>>> >> >> >> >> > code)
>>> >> >> >> >> > j  vtk.vtkObjectBase.VTKDeleteReference(J)V+0
>>> >> >> >> >> > j  vtk.vtkGlobalJavaHash.GC()I+73
>>> >> >> >> >> > j  prefs.ENV$MyVTKClean.run()V+18
>>> >> >> >> >> > j  java.awt.event.InvocationEvent.dispatch()V+47
>>> >> >> >> >> > j
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >  java.awt.EventQueue.dispatchEventImpl(Ljava/awt/AWTEvent;Ljava/lang/Object;)V+21
>>> >> >> >> >> > j
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >  java.awt.EventQueue.access$000(Ljava/awt/EventQueue;Ljava/awt/AWTEvent;Ljava/lang/Object;)V+3
>>> >> >> >> >> > j  java.awt.EventQueue$1.run()Ljava/lang/Void;+12
>>> >> >> >> >> > j  java.awt.EventQueue$1.run()Ljava/lang/Object;+1
>>> >> >> >> >> > v  ~StubRoutines::call_stub
>>> >> >> >> >> > j
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >  java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+0
>>> >> >> >> >> > j
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >  java.security.AccessControlContext$1.doIntersectionPrivilege(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;+28
>>> >> >> >> >> > j
>>> >> >> >> >> >  java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
>>> >> >> >> >> > j
>>> >> >> >> >> >  java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z+204
>>> >> >> >> >> > j
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >  java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
>>> >> >> >> >> > j
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >  java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
>>> >> >> >> >> > j
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >  java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
>>> >> >> >> >> > j
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >  java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
>>> >> >> >> >> > j  java.awt.EventDispatchThread.run()V+9
>>> >> >> >> >> > v  ~StubRoutines::call_stub
>>> >> >> >> >> > ---------------  P R O C E S S  ---------------
>>> >> >> >> >> > Java Threads: ( => current thread )
>>> >> >> >> >> >   0x0000000009609800 JavaThread "Timer-4"
>>> >> >> >> >> > [_thread_in_native,
>>> >> >> >> >> > id=5844,
>>> >> >> >> >> > stack(0x0000000051110000,0x0000000051210000)]
>>> >> >> >> >> >   0x000000000960c800 JavaThread
>>> >> >> >> >> > "SwingWorker-pool-4-thread-1"
>>> >> >> >> >> > daemon
>>> >> >> >> >> > [_thread_blocked, id=6424,
>>> >> >> >> >> > stack(0x0000000053a00000,0x0000000053b00000)]
>>> >> >> >> >> >   0x000000000960b000 JavaThread "pool-1-thread-1"
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=3136,
>>> >> >> >> >> > stack(0x000000000bd50000,0x000000000be50000)]
>>> >> >> >> >> >   0x0000000009608800 JavaThread "DestroyJavaVM"
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=5108,
>>> >> >> >> >> > stack(0x00000000022e0000,0x00000000023e0000)]
>>> >> >> >> >> >   0x0000000009608000 JavaThread "TimerQueue" daemon
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=6340, stack(0x000000000a8f0000,0x000000000a9f0000)]
>>> >> >> >> >> >   0x0000000007f2c000 JavaThread "Timer-2" [_thread_blocked,
>>> >> >> >> >> > id=6600,
>>> >> >> >> >> > stack(0x00000000090e0000,0x00000000091e0000)]
>>> >> >> >> >> >   0x0000000007f2b000 JavaThread "Timer-1" [_thread_blocked,
>>> >> >> >> >> > id=3288,
>>> >> >> >> >> > stack(0x0000000008c40000,0x0000000008d40000)]
>>> >> >> >> >> >   0x00000000061b0000 JavaThread "ssh-connection 1" daemon
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=6048, stack(0x00000000086f0000,0x00000000087f0000)]
>>> >> >> >> >> >   0x00000000080d0000 JavaThread "Transport protocol 1"
>>> >> >> >> >> > daemon
>>> >> >> >> >> > [_thread_in_native, id=4200,
>>> >> >> >> >> > stack(0x000000000a730000,0x000000000a830000)]
>>> >> >> >> >> >   0x0000000007e4c800 JavaThread "Timer-0" [_thread_blocked,
>>> >> >> >> >> > id=2128,
>>> >> >> >> >> > stack(0x0000000008fe0000,0x00000000090e0000)]
>>> >> >> >> >> > =>0x0000000007e4c000 JavaThread "AWT-EventQueue-0"
>>> >> >> >> >> > [_thread_in_native,
>>> >> >> >> >> > id=5264, stack(0x0000000008ee0000,0x0000000008fe0000)]
>>> >> >> >> >> >   0x000000000625f800 JavaThread "AWT-Windows" daemon
>>> >> >> >> >> > [_thread_in_native,
>>> >> >> >> >> > id=6700, stack(0x00000000085f0000,0x00000000086f0000)]
>>> >> >> >> >> >   0x000000000625e800 JavaThread "AWT-Shutdown"
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=2500,
>>> >> >> >> >> > stack(0x00000000084f0000,0x00000000085f0000)]
>>> >> >> >> >> >   0x000000000611b000 JavaThread "Java2D Disposer" daemon
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=4280, stack(0x00000000083f0000,0x00000000084f0000)]
>>> >> >> >> >> >   0x00000000060c7800 JavaThread "Low Memory Detector" daemon
>>> >> >> >> >> > [_thread_blocked, id=4272,
>>> >> >> >> >> > stack(0x0000000006980000,0x0000000006a80000)]
>>> >> >> >> >> >   0x00000000060c7000 JavaThread "CompilerThread1" daemon
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=2744, stack(0x0000000006880000,0x0000000006980000)]
>>> >> >> >> >> >   0x00000000060c3000 JavaThread "CompilerThread0" daemon
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=5308, stack(0x0000000006780000,0x0000000006880000)]
>>> >> >> >> >> >   0x00000000060ae800 JavaThread "JDWP Command Reader" daemon
>>> >> >> >> >> > [_thread_in_native, id=5568,
>>> >> >> >> >> > stack(0x0000000006680000,0x0000000006780000)]
>>> >> >> >> >> >   0x00000000060ab000 JavaThread "JDWP Event Helper Thread"
>>> >> >> >> >> > daemon
>>> >> >> >> >> > [_thread_blocked, id=6736,
>>> >> >> >> >> > stack(0x0000000006580000,0x0000000006680000)]
>>> >> >> >> >> >   0x00000000060a5000 JavaThread "JDWP Transport Listener:
>>> >> >> >> >> > dt_shmem"
>>> >> >> >> >> > daemon
>>> >> >> >> >> > [_thread_blocked, id=1744,
>>> >> >> >> >> > stack(0x0000000006480000,0x0000000006580000)]
>>> >> >> >> >> >   0x00000000003e6800 JavaThread "Attach Listener" daemon
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=6416, stack(0x0000000006360000,0x0000000006460000)]
>>> >> >> >> >> >   0x00000000060a0800 JavaThread "Signal Dispatcher" daemon
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=6608, stack(0x0000000006260000,0x0000000006360000)]
>>> >> >> >> >> >   0x00000000003cd800 JavaThread "Finalizer" daemon
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=5328, stack(0x0000000005f60000,0x0000000006060000)]
>>> >> >> >> >> >   0x00000000003ca000 JavaThread "Reference Handler" daemon
>>> >> >> >> >> > [_thread_blocked,
>>> >> >> >> >> > id=6568, stack(0x0000000005e60000,0x0000000005f60000)]
>>> >> >> >> >> > Other Threads:
>>> >> >> >> >> >   0x00000000003c3800 VMThread [stack:
>>> >> >> >> >> > 0x0000000005d60000,0x0000000005e60000]
>>> >> >> >> >> > [id=6624]
>>> >> >> >> >> >   0x00000000060cd800 WatcherThread [stack:
>>> >> >> >> >> > 0x0000000006a80000,0x0000000006b80000] [id=968]
>>> >> >> >> >> > VM state:not at safepoint (normal execution)
>>> >> >> >> >> > VM Mutex/Monitor currently owned by a thread: None
>>> >> >> >> >> > Heap
>>> >> >> >> >> >  PSYoungGen      total 18944K, used 491K
>>> >> >> >> >> > [0x00000000ead60000,
>>> >> >> >> >> > 0x00000000ec280000, 0x0000000100000000)
>>> >> >> >> >> >   eden space 16256K, 3% used
>>> >> >> >> >> > [0x00000000ead60000,0x00000000eaddae10,0x00000000ebd40000)
>>> >> >> >> >> >   from space 2688K, 0% used
>>> >> >> >> >> > [0x00000000ebfe0000,0x00000000ebfe0000,0x00000000ec280000)
>>> >> >> >> >> >   to   space 2688K, 0% used
>>> >> >> >> >> > [0x00000000ebd40000,0x00000000ebd40000,0x00000000ebfe0000)
>>> >> >> >> >> >  PSOldGen        total 43392K, used 10564K
>>> >> >> >> >> > [0x00000000c0800000,
>>> >> >> >> >> > 0x00000000c3260000, 0x00000000ead60000)
>>> >> >> >> >> >   object space 43392K, 24% used
>>> >> >> >> >> > [0x00000000c0800000,0x00000000c1251378,0x00000000c3260000)
>>> >> >> >> >> >  PSPermGen       total 23616K, used 23499K
>>> >> >> >> >> > [0x00000000bb600000,
>>> >> >> >> >> > 0x00000000bcd10000, 0x00000000c0800000)
>>> >> >> >> >> >   object space 23616K, 99% used
>>> >> >> >> >> > [0x00000000bb600000,0x00000000bccf2d70,0x00000000bcd10000)
>>> >> >> >> >> > Dynamic libraries:
>>> >> >> >> >> > 0x0000000000400000 - 0x000000000042e000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\java.exe
>>> >> >> >> >> > 0x00000000775d0000 - 0x0000000077779000
>>> >> >> >> >> > C:\Windows\SYSTEM32\ntdll.dll
>>> >> >> >> >> > 0x00000000773b0000 - 0x00000000774cf000
>>> >> >> >> >> > C:\Windows\system32\kernel32.dll
>>> >> >> >> >> > 0x000007fefcac0000 - 0x000007fefcb2b000
>>> >> >> >> >> > C:\Windows\system32\KERNELBASE.dll
>>> >> >> >> >> > 0x000007fefe6b0000 - 0x000007fefe78b000
>>> >> >> >> >> > C:\Windows\system32\ADVAPI32.dll
>>> >> >> >> >> > 0x000007fefce70000 - 0x000007fefcf0f000
>>> >> >> >> >> > C:\Windows\system32\msvcrt.dll
>>> >> >> >> >> > 0x000007fefece0000 - 0x000007fefecff000
>>> >> >> >> >> > C:\Windows\SYSTEM32\sechost.dll
>>> >> >> >> >> > 0x000007fefe090000 - 0x000007fefe1bd000
>>> >> >> >> >> > C:\Windows\system32\RPCRT4.dll
>>> >> >> >> >> > 0x000000006d890000 - 0x000000006df94000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\server\jvm.dll
>>> >> >> >> >> > 0x00000000774d0000 - 0x00000000775ca000
>>> >> >> >> >> > C:\Windows\system32\USER32.dll
>>> >> >> >> >> > 0x000007fefd290000 - 0x000007fefd2f7000
>>> >> >> >> >> > C:\Windows\system32\GDI32.dll
>>> >> >> >> >> > 0x000007fefd280000 - 0x000007fefd28e000
>>> >> >> >> >> > C:\Windows\system32\LPK.dll
>>> >> >> >> >> > 0x000007fefed00000 - 0x000007fefedc9000
>>> >> >> >> >> > C:\Windows\system32\USP10.dll
>>> >> >> >> >> > 0x000007fef9d90000 - 0x000007fef9dcb000
>>> >> >> >> >> > C:\Windows\system32\WINMM.dll
>>> >> >> >> >> > 0x000007fefe790000 - 0x000007fefe7be000
>>> >> >> >> >> > C:\Windows\system32\IMM32.DLL
>>> >> >> >> >> > 0x000007fefe390000 - 0x000007fefe499000
>>> >> >> >> >> > C:\Windows\system32\MSCTF.dll
>>> >> >> >> >> > 0x000000006d800000 - 0x000000006d80e000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\verify.dll
>>> >> >> >> >> > 0x000000006d450000 - 0x000000006d477000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\java.dll
>>> >> >> >> >> > 0x000000006d3b0000 - 0x000000006d3ba000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\hpi.dll
>>> >> >> >> >> > 0x00000000777a0000 - 0x00000000777a7000
>>> >> >> >> >> > C:\Windows\system32\PSAPI.DLL
>>> >> >> >> >> > 0x000000006d4c0000 - 0x000000006d4f4000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\jdwp.dll
>>> >> >> >> >> > 0x000000006d6d0000 - 0x000000006d6d8000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\npt.dll
>>> >> >> >> >> > 0x000000006d850000 - 0x000000006d862000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\zip.dll
>>> >> >> >> >> > 0x000000006d300000 - 0x000000006d30a000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\dt_shmem.dll
>>> >> >> >> >> > 0x000007fef1360000 - 0x000007fef13cb000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkCommonJava.dll
>>> >> >> >> >> > 0x000007fee9900000 - 0x000007fee9b6f000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkCommon.dll
>>> >> >> >> >> > 0x000007fef4bf0000 - 0x000007fef4c32000
>>> >> >> >> >> > C:\Users\...\dist\64\vtksys.dll
>>> >> >> >> >> > 0x000007fefd1d0000 - 0x000007fefd21d000
>>> >> >> >> >> > C:\Windows\system32\WS2_32.dll
>>> >> >> >> >> > 0x000007fefcde0000 - 0x000007fefcde8000
>>> >> >> >> >> > C:\Windows\system32\NSI.dll
>>> >> >> >> >> > 0x0000000072850000 - 0x00000000728ed000
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> > C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4940_none_08e4299fa83d7e3c\MSVCR90.dll
>>> >> >> >> >> > 0x0000000074590000 - 0x0000000074663000
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> > C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4940_none_08e4299fa83d7e3c\MSVCP90.dll
>>> >> >> >> >> > 0x000007fef0410000 - 0x000007fef0419000
>>> >> >> >> >> > C:\Windows\system32\WSOCK32.dll
>>> >> >> >> >> > 0x000007feedb20000 - 0x000007feedbbc000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkFilteringJava.dll
>>> >> >> >> >> > 0x000007fee95e0000 - 0x000007fee98f2000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkFiltering.dll
>>> >> >> >> >> > 0x000007fef9f90000 - 0x000007fef9f9f000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkGenericFilteringJava.dll
>>> >> >> >> >> > 0x000007fef1320000 - 0x000007fef1356000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkGenericFiltering.dll
>>> >> >> >> >> > 0x000007fee8fe0000 - 0x000007fee95d6000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkGraphics.dll
>>> >> >> >> >> > 0x000007fef0a60000 - 0x000007fef0a91000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkverdict.dll
>>> >> >> >> >> > 0x000007feef720000 - 0x000007feef7b2000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkGraphicsJava.dll
>>> >> >> >> >> > 0x000007fef1290000 - 0x000007fef12df000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkHybridJava.dll
>>> >> >> >> >> > 0x000007fee8d30000 - 0x000007fee8fd1000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkHybrid.dll
>>> >> >> >> >> > 0x000007fee88d0000 - 0x000007fee8d22000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkRendering.dll
>>> >> >> >> >> > 0x000007fefe4a0000 - 0x000007fefe6a3000
>>> >> >> >> >> > C:\Windows\system32\ole32.dll
>>> >> >> >> >> > 0x000007fefe7c0000 - 0x000007fefe897000
>>> >> >> >> >> > C:\Windows\system32\OLEAUT32.dll
>>> >> >> >> >> > 0x000007fee8600000 - 0x000007fee88ce000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkImaging.dll
>>> >> >> >> >> > 0x000007fee8150000 - 0x000007fee85f9000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkIO.dll
>>> >> >> >> >> > 0x000007fef4bc0000 - 0x000007fef4be3000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkDICOMParser.dll
>>> >> >> >> >> > 0x000007feed060000 - 0x000007feed110000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkNetCDF.dll
>>> >> >> >> >> > 0x000007fef9f70000 - 0x000007fef9f8d000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkNetCDF_cxx.dll
>>> >> >> >> >> > 0x000007feed560000 - 0x000007feed5f3000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkmetaio.dll
>>> >> >> >> >> > 0x000007fef0a40000 - 0x000007fef0a55000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkzlib.dll
>>> >> >> >> >> > 0x000007fef0a10000 - 0x000007fef0a33000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkpng.dll
>>> >> >> >> >> > 0x000007feef6b0000 - 0x000007feef6d7000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkjpeg.dll
>>> >> >> >> >> > 0x000007feee410000 - 0x000007feee461000
>>> >> >> >> >> > C:\Users\...\dist\64\vtktiff.dll
>>> >> >> >> >> > 0x000007feee3e0000 - 0x000007feee403000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkexpat.dll
>>> >> >> >> >> > 0x000007fef0580000 - 0x000007fef059f000
>>> >> >> >> >> > C:\Windows\system32\AVIFIL32.dll
>>> >> >> >> >> > 0x000007fef9d20000 - 0x000007fef9d38000
>>> >> >> >> >> > C:\Windows\system32\MSACM32.dll
>>> >> >> >> >> > 0x000007feee350000 - 0x000007feee379000
>>> >> >> >> >> > C:\Windows\system32\MSVFW32.dll
>>> >> >> >> >> > 0x000007fefd300000 - 0x000007fefe088000
>>> >> >> >> >> > C:\Windows\system32\SHELL32.dll
>>> >> >> >> >> > 0x000007fefcdf0000 - 0x000007fefce61000
>>> >> >> >> >> > C:\Windows\system32\SHLWAPI.dll
>>> >> >> >> >> > 0x000007fefb4e0000 - 0x000007fefb6d4000
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> > C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac\COMCTL32.dll
>>> >> >> >> >> > 0x000007fef9eb0000 - 0x000007fef9ebf000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkftgl.dll
>>> >> >> >> >> > 0x000007fee9cc0000 - 0x000007fee9ddd000
>>> >> >> >> >> > C:\Windows\system32\OPENGL32.dll
>>> >> >> >> >> > 0x000007feedaf0000 - 0x000007feedb1d000
>>> >> >> >> >> > C:\Windows\system32\GLU32.dll
>>> >> >> >> >> > 0x000007fee9bc0000 - 0x000007fee9cb1000
>>> >> >> >> >> > C:\Windows\system32\DDRAW.dll
>>> >> >> >> >> > 0x000007fef9420000 - 0x000007fef9428000
>>> >> >> >> >> > C:\Windows\system32\DCIMAN32.dll
>>> >> >> >> >> > 0x000007fefe8a0000 - 0x000007fefea77000
>>> >> >> >> >> > C:\Windows\system32\SETUPAPI.dll
>>> >> >> >> >> > 0x000007fefcb30000 - 0x000007fefcb66000
>>> >> >> >> >> > C:\Windows\system32\CFGMGR32.dll
>>> >> >> >> >> > 0x000007fefcdc0000 - 0x000007fefcdda000
>>> >> >> >> >> > C:\Windows\system32\DEVOBJ.dll
>>> >> >> >> >> > 0x000007fefaed0000 - 0x000007fefaee8000
>>> >> >> >> >> > C:\Windows\system32\dwmapi.dll
>>> >> >> >> >> > 0x000007feed4e0000 - 0x000007feed554000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkfreetype.dll
>>> >> >> >> >> > 0x000007fee7f50000 - 0x000007fee814f000
>>> >> >> >> >> > C:\Windows\system32\d3d9.dll
>>> >> >> >> >> > 0x000007fefb9d0000 - 0x000007fefb9dc000
>>> >> >> >> >> > C:\Windows\system32\VERSION.dll
>>> >> >> >> >> > 0x000007fef8870000 - 0x000007fef8877000
>>> >> >> >> >> > C:\Windows\system32\d3d8thk.dll
>>> >> >> >> >> > 0x000007feedaa0000 - 0x000007feedae5000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkexoIIc.dll
>>> >> >> >> >> > 0x000007feefc40000 - 0x000007feefc57000
>>> >> >> >> >> > C:\Windows\system32\AVICAP32.dll
>>> >> >> >> >> > 0x000007feec740000 - 0x000007feec7c1000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkRenderingJava.dll
>>> >> >> >> >> > 0x000000006d490000 - 0x000000006d497000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\jawt.dll
>>> >> >> >> >> > 0x000000006d0a0000 - 0x000000006d263000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\awt.dll
>>> >> >> >> >> > 0x000007fef8bc0000 - 0x000007fef8c31000
>>> >> >> >> >> > C:\Windows\system32\WINSPOOL.DRV
>>> >> >> >> >> > 0x000007feed010000 - 0x000007feed05e000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkIOJava.dll
>>> >> >> >> >> > 0x000007feec6f0000 - 0x000007feec732000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkImagingJava.dll
>>> >> >> >> >> > 0x000007feed4b0000 - 0x000007feed4d3000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkVolumeRenderingJava.dll
>>> >> >> >> >> > 0x000007fee7ad0000 - 0x000007fee7f48000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkVolumeRendering.dll
>>> >> >> >> >> > 0x000007fee7a70000 - 0x000007fee7ac2000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkWidgetsJava.dll
>>> >> >> >> >> > 0x000007fee78e0000 - 0x000007fee7a6e000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkWidgets.dll
>>> >> >> >> >> > 0x000007fee9b90000 - 0x000007fee9bb8000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkgdcmJava.dll
>>> >> >> >> >> > 0x000007fee7820000 - 0x000007fee78df000
>>> >> >> >> >> > C:\Users\...\dist\64\vtkgdcm.dll
>>> >> >> >> >> > 0x000007fee7710000 - 0x000007fee781e000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmMSFF.dll
>>> >> >> >> >> > 0x000007fee76e0000 - 0x000007fee7710000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmIOD.dll
>>> >> >> >> >> > 0x000007fee7660000 - 0x000007fee76d5000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmDSED.dll
>>> >> >> >> >> > 0x000007feef470000 - 0x000007feef484000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmCommon.dll
>>> >> >> >> >> > 0x000007feec230000 - 0x000007feec246000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmzlib.dll
>>> >> >> >> >> > 0x000007fee7630000 - 0x000007fee7653000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmexpat.dll
>>> >> >> >> >> > 0x000007fee74d0000 - 0x000007fee762b000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmDICT.dll
>>> >> >> >> >> > 0x000007fee74a0000 - 0x000007fee74cb000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmjpeg8.dll
>>> >> >> >> >> > 0x000007fee7470000 - 0x000007fee749b000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmjpeg12.dll
>>> >> >> >> >> > 0x000007fee7440000 - 0x000007fee746c000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmjpeg16.dll
>>> >> >> >> >> > 0x000007fee7410000 - 0x000007fee7437000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmopenjpeg.dll
>>> >> >> >> >> > 0x000007fee73d0000 - 0x000007fee7409000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmcharls.dll
>>> >> >> >> >> > 0x000007fefb300000 - 0x000007fefb356000
>>> >> >> >> >> > C:\Windows\system32\uxtheme.dll
>>> >> >> >> >> > 0x000007fefc940000 - 0x000007fefc94f000
>>> >> >> >> >> > C:\Windows\system32\CRYPTBASE.dll
>>> >> >> >> >> > 0x000000006d340000 - 0x000000006d3a6000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\fontmanager.dll
>>> >> >> >> >> > 0x000000006d6a0000 - 0x000000006d6b7000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\net.dll
>>> >> >> >> >> > 0x000007fefc240000 - 0x000007fefc295000
>>> >> >> >> >> > C:\Windows\system32\mswsock.dll
>>> >> >> >> >> > 0x000007fefc230000 - 0x000007fefc237000
>>> >> >> >> >> > C:\Windows\System32\wship6.dll
>>> >> >> >> >> > 0x000000006d6c0000 - 0x000000006d6cb000 C:\Program
>>> >> >> >> >> > Files\Java\jdk1.6.0_24\jre\bin\nio.dll
>>> >> >> >> >> > 0x000007fee7360000 - 0x000007fee73cf000
>>> >> >> >> >> > C:\Users\...\dist\64\gdcmjni.dll
>>> >> >> >> >> > 0x000007fefc2e0000 - 0x000007fefc2f7000
>>> >> >> >> >> > C:\Windows\system32\CRYPTSP.dll
>>> >> >> >> >> > 0x000007fefbfa0000 - 0x000007fefbfe7000
>>> >> >> >> >> > C:\Windows\system32\rsaenh.dll
>>> >> >> >> >> > 0x000007fefbd50000 - 0x000007fefbd6e000
>>> >> >> >> >> > C:\Windows\system32\USERENV.dll
>>> >> >> >> >> > 0x000007fefca10000 - 0x000007fefca1f000
>>> >> >> >> >> > C:\Windows\system32\profapi.dll
>>> >> >> >> >> > 0x000007fefa4e0000 - 0x000007fefa4f5000
>>> >> >> >> >> > C:\Windows\system32\NLAapi.dll
>>> >> >> >> >> > 0x000007fef89e0000 - 0x000007fef89f5000
>>> >> >> >> >> > C:\Windows\system32\napinsp.dll
>>> >> >> >> >> > 0x000007fef89c0000 - 0x000007fef89d9000
>>> >> >> >> >> > C:\Windows\system32\pnrpnsp.dll
>>> >> >> >> >> > 0x000007fef89b0000 - 0x000007fef89c0000
>>> >> >> >> >> > C:\Windows\system32\wshbth.dll
>>> >> >> >> >> > 0x000007fefc0c0000 - 0x000007fefc11b000
>>> >> >> >> >> > C:\Windows\system32\DNSAPI.dll
>>> >> >> >> >> > 0x000007fef89a0000 - 0x000007fef89ab000
>>> >> >> >> >> > C:\Windows\System32\winrnr.dll
>>> >> >> >> >> > 0x000007fefbc40000 - 0x000007fefbc47000
>>> >> >> >> >> > C:\Windows\System32\wshtcpip.dll
>>> >> >> >> >> > 0x000007fef9f30000 - 0x000007fef9f57000
>>> >> >> >> >> > C:\Windows\system32\IPHLPAPI.DLL
>>> >> >> >> >> > 0x000007fef9f60000 - 0x000007fef9f6b000
>>> >> >> >> >> > C:\Windows\system32\WINNSI.DLL
>>> >> >> >> >> > 0x000007fef8990000 - 0x000007fef8998000
>>> >> >> >> >> > C:\Windows\system32\rasadhlp.dll
>>> >> >> >> >> > 0x000007fef9ec0000 - 0x000007fef9f13000
>>> >> >> >> >> > C:\Windows\System32\fwpuclnt.dll
>>> >> >> >> >> > 0x000007fefcd80000 - 0x000007fefcdba000
>>> >> >> >> >> > C:\Windows\system32\WINTRUST.dll
>>> >> >> >> >> > 0x000007fefcb70000 - 0x000007fefccd7000
>>> >> >> >> >> > C:\Windows\system32\CRYPT32.dll
>>> >> >> >> >> > 0x000007fefcab0000 - 0x000007fefcabf000
>>> >> >> >> >> > C:\Windows\system32\MSASN1.dll
>>> >> >> >> >> > 0x0000000069500000 - 0x000000006a195000
>>> >> >> >> >> > C:\Windows\system32\nvoglv64.DLL
>>> >> >> >> >> > VM Arguments:
>>> >> >> >> >> > jvm_args: -Xdebug
>>> >> >> >> >> > -Xrunjdwp:transport=dt_shmem,address=javadebug
>>> >> >> >> >> > -Dfile.encoding=UTF-8 -Dsun.java2d.ddoffscreen=false
>>> >> >> >> >> > -Dsun.java2d.gdiblit=false
>>> >> >> >> >> > java_command: Application yes no
>>> >> >> >> >> > Launcher Type: SUN_STANDARD
>>> >> >> >> >> > Environment Variables:
>>> >> >> >> >> > JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18
>>> >> >> >> >> > PATH=C:\Program Files (x86)\MiKTeX
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> > 2.8\miktex\bin;C:\Ruby19\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\strawberry\c\bin;C:\strawberry\perl\bin;c:\Program
>>> >> >> >> >> > Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program
>>> >> >> >> >> > Files\MySQL\MySQL
>>> >> >> >> >> > Server
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> > 5.1\bin;C:\Users\jmorra\Downloads\dcm4che\dcm4che-2.0.21\bin;C:\Users\...\dist\64;C:\Program
>>> >> >> >> >> > Files (x86)\Calibre2\;C:\Program Files (x86)\SSH
>>> >> >> >> >> > Communications
>>> >> >> >> >> > Security\SSH
>>> >> >> >> >> > Secure Shell
>>> >> >> >> >> > USERNAME=jmorra
>>> >> >> >> >> > OS=Windows_NT
>>> >> >> >> >> > PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 23 Stepping 10,
>>> >> >> >> >> > GenuineIntel
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> > ---------------  S Y S T E M  ---------------
>>> >> >> >> >> > OS: Windows 7 Build 7601 Service Pack 1
>>> >> >> >> >> > CPU:total 2 (2 cores per cpu, 1 threads per core) family 6
>>> >> >> >> >> > model
>>> >> >> >> >> > 23
>>> >> >> >> >> > stepping
>>> >> >> >> >> > 10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1
>>> >> >> >> >> > Memory: 4k page, physical 4158344k(884196k free), swap
>>> >> >> >> >> > 8314844k(3659748k
>>> >> >> >> >> > free)
>>> >> >> >> >> > vm_info: Java HotSpot(TM) 64-Bit Server VM (19.1-b02) for
>>> >> >> >> >> > windows-amd64
>>> >> >> >> >> > JRE
>>> >> >> >> >> > (1.6.0_24-b07), built on Feb  2 2011 16:25:45 by "java_re"
>>> >> >> >> >> > with
>>> >> >> >> >> > MS
>>> >> >> >> >> > VC++
>>> >> >> >> >> > 8.0
>>> >> >> >> >> > (VS2005)
>>> >> >> >> >> > time: Tue Mar 29 11:21:13 2011
>>> >> >> >> >> > elapsed time: 50 seconds
>>> >> >> >> >> >
>>> >> >> >> >> > On Tue, Mar 29, 2011 at 8:27 AM, Sebastien Jourdain
>>> >> >> >> >> > <sebastien.jourdain at kitware.com> wrote:
>>> >> >> >> >> >>
>>> >> >> >> >> >> As I said, since a double[] is not a vtkObject, your are
>>> >> >> >> >> >> good
>>> >> >> >> >> >> to
>>> >> >> >> >> >> go
>>> >> >> >> >> >> with image.GetSpacing(), and there is no arm in that.
>>> >> >> >> >> >> It is not that it make java difficult to use, it will
>>> >> >> >> >> >> induce
>>> >> >> >> >> >> more
>>> >> >> >> >> >> lines. But don't make me wrong this problem occurs ONLY
>>> >> >> >> >> >> when
>>> >> >> >> >> >> you
>>> >> >> >> >> >> bind
>>> >> >> >> >> >> two vtkObject together whithout any Java instance holding
>>> >> >> >> >> >> the
>>> >> >> >> >> >> reference in between.
>>> >> >> >> >> >>
>>> >> >> >> >> >> BAD => a.SetX(b.GetY());
>>> >> >> >> >> >>
>>> >> >> >> >> >> But you can do
>>> >> >> >> >> >>
>>> >> >> >> >> >> z = a.GetX().GetY().GetZ();
>>> >> >> >> >> >> b.SetZ(z);
>>> >> >> >> >> >>
>>> >> >> >> >> >> or that too
>>> >> >> >> >> >>
>>> >> >> >> >> >> b.SetZ(z = a.GetX().GetY().GetZ());
>>> >> >> >> >> >>
>>> >> >> >> >> >> Seb
>>> >> >> >> >> >>
>>> >> >> >> >> >> On Tue, Mar 29, 2011 at 11:10 AM, Jonathan Morra
>>> >> >> >> >> >> <jonmorra at gmail.com>
>>> >> >> >> >> >> wrote:
>>> >> >> >> >> >> > Thanks for your help.  For number 3, image.GetSpacing()
>>> >> >> >> >> >> > is a
>>> >> >> >> >> >> > VTK
>>> >> >> >> >> >> > call,
>>> >> >> >> >> >> > however it returns a java double[], so I thought that it
>>> >> >> >> >> >> > was
>>> >> >> >> >> >> > OK.
>>> >> >> >> >> >> >  All
>>> >> >> >> >> >> > these
>>> >> >> >> >> >> > memory restrictions in Java make it very difficult to
>>> >> >> >> >> >> > use,
>>> >> >> >> >> >> > is
>>> >> >> >> >> >> > there
>>> >> >> >> >> >> > any
>>> >> >> >> >> >> > plans to improve the usage of VTK in Java?
>>> >> >> >> >> >> > Thanks again!
>>> >> >> >> >> >> >
>>> >> >> >> >> >> > On Tue, Mar 29, 2011 at 5:26 AM, Sebastien Jourdain
>>> >> >> >> >> >> > <sebastien.jourdain at kitware.com> wrote:
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> Hi Jonathan,
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> I directly reply on the context of your mail,
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> On Tue, Mar 29, 2011 at 2:33 AM, Jonathan Morra
>>> >> >> >> >> >> >> <jonmorra at gmail.com>
>>> >> >> >> >> >> >> wrote:
>>> >> >> >> >> >> >> > Since I'm using vtkJavaGarbageCollector I'm already
>>> >> >> >> >> >> >> > using
>>> >> >> >> >> >> >> > vtkGlobalJavaHash.GC();.  The main questions that I
>>> >> >> >> >> >> >> > currently
>>> >> >> >> >> >> >> > still
>>> >> >> >> >> >> >> > need
>>> >> >> >> >> >> >> > answered are here
>>> >> >> >> >> >> >> > 1.  should I have to call System.gc(); and
>>> >> >> >> >> >> >> > System.runFinalization();
>>> >> >> >> >> >> >> > frequently with VTK+Java?  It appears the memory is
>>> >> >> >> >> >> >> > managed
>>> >> >> >> >> >> >> > better
>>> >> >> >> >> >> >> > when
>>> >> >> >> >> >> >> > calling these lines every time vtkGlobalJavaHash.GC()
>>> >> >> >> >> >> >> > is
>>> >> >> >> >> >> >> > called,
>>> >> >> >> >> >> >> > but
>>> >> >> >> >> >> >> > I
>>> >> >> >> >> >> >> > don't
>>> >> >> >> >> >> >> > know if this is necessary.
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> System.gc(); is the only one that you should really care
>>> >> >> >> >> >> >> about.
>>> >> >> >> >> >> >> But
>>> >> >> >> >> >> >> Java does not offer any guarantee if this method will do
>>> >> >> >> >> >> >> something
>>> >> >> >> >> >> >> or
>>> >> >> >> >> >> >> not.  Moreover, the GC will stop all the thread to do
>>> >> >> >> >> >> >> its
>>> >> >> >> >> >> >> job.
>>> >> >> >> >> >> >> So
>>> >> >> >> >> >> >> it
>>> >> >> >> >> >> >> is basically up to you.
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> > 2.  Is it ok to reuse Java variables?  Such as
>>> >> >> >> >> >> >> > vtkImageData image = filter.GetOuput();
>>> >> >> >> >> >> >> > // Do Stuff
>>> >> >> >> >> >> >> > image = filter2.GetOuput();
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> yes
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> > 3.   Is it OK to move around java objects without an
>>> >> >> >> >> >> >> > intermediate
>>> >> >> >> >> >> >> > reference?
>>> >> >> >> >> >> >> >  Such as
>>> >> >> >> >> >> >> > image1.SetOutputSpacing(image2.GetSpacing());
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> what do you mean by Java object ? for me as the Set/Get
>>> >> >> >> >> >> >> do
>>> >> >> >> >> >> >> have a
>>> >> >> >> >> >> >> capital letter, I would say they come from the VTK world
>>> >> >> >> >> >> >> and
>>> >> >> >> >> >> >> if
>>> >> >> >> >> >> >> they
>>> >> >> >> >> >> >> return a vtkObject, you should use an intermediate
>>> >> >> >> >> >> >> variable
>>> >> >> >> >> >> >> otherwise
>>> >> >> >> >> >> >> if it's an array of primary type, that is just fine.
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> > Sorry, forgot one more.  Should I be calling
>>> >> >> >> >> >> >> > vtkGlobalJavaHash.GC()
>>> >> >> >> >> >> >> > from
>>> >> >> >> >> >> >> > the event dispatch thread?
>>> >> >> >> >> >> >> > I saw that as an option in vtkJavaGarbageCollector,
>>> >> >> >> >> >> >> > and
>>> >> >> >> >> >> >> > I'm
>>> >> >> >> >> >> >> > not
>>> >> >> >> >> >> >> > sure
>>> >> >> >> >> >> >> > why
>>> >> >> >> >> >> >> > that's the case.
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> This totally depend on your VTK code, if you insure that
>>> >> >> >> >> >> >> all
>>> >> >> >> >> >> >> the
>>> >> >> >> >> >> >> call
>>> >> >> >> >> >> >> you are doing on the VTK layer is done through the EDT,
>>> >> >> >> >> >> >> then
>>> >> >> >> >> >> >> you
>>> >> >> >> >> >> >> should, otherwise you shouldn't. (This is a requirement
>>> >> >> >> >> >> >> if
>>> >> >> >> >> >> >> the
>>> >> >> >> >> >> >> data
>>> >> >> >> >> >> >> is
>>> >> >> >> >> >> >> shown in a renderer.)
>>> >> >> >> >> >> >>
>>> >> >> >> >> >> >> Seb
>>> >> >> >> >> >> >
>>> >> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >> >
>>> >> >> >> >
>>> >> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >
>>> >> >
>>> >
>>> >
>>
>>
>



More information about the vtkusers mailing list