[vtkusers] java memory

Sebastien Jourdain sebastien.jourdain at kitware.com
Tue Mar 29 14:41:24 EDT 2011


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