[vtkusers] Java vtkPanel

Kenji Tsumura kenji.tsumura at neosoftmedical.com
Tue Apr 19 15:00:51 EDT 2016


Hi Seb,

Thank you for your advice anyway.

Kenji

From: Sebastien Jourdain [mailto:sebastien.jourdain at kitware.com]
Sent: Tuesday, April 19, 2016 1:30 PM
To: Kenji Tsumura
Cc: vtkusers at vtk.org
Subject: Re: [vtkusers] Java vtkPanel

Hi Kenji,

Nothing comes to my mind on what could keep a reference to those classes. Having them listing somehow reduce the search area.

Regarding the interactor. It seems you don't need it as you don't have 3D widgets or picking. That interactor can be managed on the Java side like vtkPanel is doing. I'm not saying you must go that route, but that was one of a suggestion to see if for some reason a thread was keeping a reference to that interactor. Although based on the latest output, it does not seems to be the case as it get properly cleaned up.

I don't have any clue on how to figure it out without spending some time looking at that issue myself.

Good luck with your investigation,

Seb


On Tue, Apr 19, 2016 at 11:52 AM, Kenji Tsumura <kenji.tsumura at neosoftmedical.com<mailto:kenji.tsumura at neosoftmedical.com>> wrote:
Hi Seb,

Here is the information I got. vtkOpenGLLight, vtkOpenGLCamera, vtkWin32OpenGLRenderWindow, and vtkOpenGLRenderer are not disposed. When vtkRenderWindowPanel is used, two vktLight objects are instantiated, and only one of them are disposed.
Do we have any suggestion on how to dispose these objects?

Using vtkPanel
List of classes kept in Java layer:
- vtkOpenGLLight: 1
- vtkOpenGLCamera: 1
- vtkWin32OpenGLRenderWindow: 1
- vtkOpenGLRenderer: 1

List of classes removed in Java layer:
- vtkOpenGLPolyDataMapper: 1
- vtkOpenGLActor: 1
- vtkInteractorStyleTrackballCamera: 1
- vtkGenericRenderWindowInteractor: 1
- vtkSphereSource: 1
- vtkAlgorithmOutput: 1


Using vtkCanvas
List of classes kept in Java layer:
- vtkOpenGLLight: 1
- vtkOpenGLCamera: 1
- vtkWin32OpenGLRenderWindow: 1
- vtkOpenGLRenderer: 1

List of classes removed in Java layer:
- vtkOpenGLPolyDataMapper: 1
- vtkOpenGLActor: 1
- vtkInteractorStyleTrackballCamera: 2
- vtkGenericRenderWindowInteractor: 1
- vtkSphereSource: 1
- vtkBoxWidget: 1
- vtkAlgorithmOutput: 1
- vtkPlaneWidget: 1


Using vtkRenderWindowPanel
List of classes kept in Java layer:
- vtkOpenGLLight: 1
- vtkOpenGLCamera: 1
- vtkWin32OpenGLRenderWindow: 1
- vtkOpenGLRenderer: 1

List of classes removed in Java layer:
- vtkOpenGLLight: 1
- vtkOpenGLPolyDataMapper: 1
- vtkOpenGLActor: 1
- vtkInteractorStyleTrackballCamera: 2
- vtkGenericRenderWindowInteractor: 1
- vtkSphereSource: 1
- vtkBoxWidget: 1
- vtkAlgorithmOutput: 1
- vtkPlaneWidget: 1

BTY,
>Do you need the interactor?
Yes. We need to interact with users (rotation, pan, WW/WL, etc).
> Are you using 3D widgets or picking?
No, at the moment.

Thank you,

Kenji
From: Sebastien Jourdain [mailto:sebastien.jourdain at kitware.com<mailto:sebastien.jourdain at kitware.com>]
Sent: Tuesday, April 19, 2016 10:42 AM

To: Kenji Tsumura
Cc: vtkusers at vtk.org<mailto:vtkusers at vtk.org>
Subject: Re: [vtkusers] Java vtkPanel

You should have kept "vtkObject.JAVA_OBJECT_MANAGER.gc(false);"
Moreover, you can try with "true" so it will print out the actual classes that have been released.

One thing that I'm not sure of, is that you start the interactor and I'm wondering if a thread is keeping a reference to the full tree in some way which prevent the structure to be cleaned up. Do you need the interactor? Are you using 3D widgets or picking? If so vtkCanvas might be a better fit as vtkPanel implement in the Java World a trackball type of interaction without using the vtkInteractor object.

Seb

On Tue, Apr 19, 2016 at 8:54 AM, Kenji Tsumura <kenji.tsumura at neosoftmedical.com<mailto:kenji.tsumura at neosoftmedical.com>> wrote:
Hi Seb,

I tried using vtkPanel. The memory leak still persists.
Please find the attached source code and captured memory profile.

My environtment:
VTK 7.0.0
CMake 3.1.1
Visual Studio Professional 2013
Eclipse Luna 4.4.1 (for my java application)

As for library loader, the class just called bunch of System.loadLibrary.

Are there anything I can try?
Thank you,

Kenji


From: Sebastien Jourdain [mailto:sebastien.jourdain at kitware.com<mailto:sebastien.jourdain at kitware.com>]
Sent: Monday, April 18, 2016 5:19 PM

To: Kenji Tsumura
Cc: vtkusers at vtk.org<mailto:vtkusers at vtk.org>
Subject: Re: [vtkusers] Java vtkPanel

Hum,

Out of curiosity can you try using vtkPanel instead and calling its Java implementation of the delete() function and see if you can see it disappear or not within you tool (NetBean?)?

I'm wondering which piece keep a ref on it...

Seb

On Mon, Apr 18, 2016 at 4:06 PM, Kenji Tsumura <kenji.tsumura at neosoftmedical.com<mailto:kenji.tsumura at neosoftmedical.com>> wrote:
Hi Seb,

Thank you for the advice.
So I change my test code as you suggested, but the problem still persists.

                JFrameRenderer.this.remove(renderWindowPanel);
                // renderWindowPanel.Delete();
                renderWindowPanel = null;
                vtkObject.JAVA_OBJECT_MANAGER.gc(false);

The attached shows the renderWindowPanel has not been released after 6 times of button click that triggers replacing the renderWindowPanel object.
Do I miss something?

Thank you,

Kenji

From: Sebastien Jourdain [mailto:sebastien.jourdain at kitware.com<mailto:sebastien.jourdain at kitware.com>]
Sent: Monday, April 18, 2016 4:32 PM
To: Kenji Tsumura
Cc: vtkusers at vtk.org<mailto:vtkusers at vtk.org>
Subject: Re: [vtkusers] Java vtkPanel

Hi Kenji,

You can look at what we are doing with the delete() method of vtkPanel (knowing that we leak on Linux instead of crashing).
But I'm guessing I see 3 possible issue in your code.

1) You should try to detach your renderWindowPanel instance from the parent JFrame.
2) Then you should set it to null before calling vtkObject.JAVA_OBJECT_MANAGER.gc(false);
3) And in any case, you should not call Delete() on it.

I'm thinking your code may cleanup its memory but not the first time you do it. After 3 times, you only cleared the first allocated memory.

Hope that helps,

Seb

PS: If ever you want to contribute your native library loader, please feel free to do so, I can facilitate the process. ;-)

On Mon, Apr 18, 2016 at 2:30 PM, Kenji Tsumura <kenji.tsumura at neosoftmedical.com<mailto:kenji.tsumura at neosoftmedical.com>> wrote:
Hi,

I have a Java application that use vtkPanel. Precisely, I made a class that extends vtkRenderWindowPanel. When an object of the class is no more used, I would like to dispose the object. But I couldn’t dispose it no matter how.  Java VisualVM indicates the object is JNI global reference. So  how can I dispose it? I used the Delete method and called vtkObject.JAVA_OBJECT_MANAGER.gc(false), but it didn’t work (it works for other VTK objects). The attached file is a simple test code that demonstrates vtkRenderWindowPanel is never disposed.

I have seen similar post in the past, but never be answered in the way I hope. So I decided to post. I would appreciate any advice.
Thank you,

Kenji

“The information contained in this communication may be confidential, is intended only for the use of the recipient(s) named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please return it to the sender immediately and delete the original message and any copy of it from your computer system. If you have any questions concerning this message, please contact the sender.

Disclaimer: The information contained in this communication may be confidential, is intended only for the use of the recipient(s) named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please return it to the sender immediately and delete the original message and any copy of it from your computer system. If you have any questions concerning this message, please contact the sender.

_______________________________________________
Powered by www.kitware.com<http://www.kitware.com>

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers

Disclaimer: The information contained in this communication may be confidential, is intended only for the use of the recipient(s) named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please return it to the sender immediately and delete the original message and any copy of it from your computer system. If you have any questions concerning this message, please contact the sender.

Disclaimer: The information contained in this communication may be confidential, is intended only for the use of the recipient(s) named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please return it to the sender immediately and delete the original message and any copy of it from your computer system. If you have any questions concerning this message, please contact the sender.

Disclaimer: The information contained in this communication may be confidential, is intended only for the use of the recipient(s) named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please return it to the sender immediately and delete the original message and any copy of it from your computer system. If you have any questions concerning this message, please contact the sender.

Disclaimer: The information contained in this communication may be confidential, is intended only for the use of the recipient(s) named above, and may be legally privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please return it to the sender immediately and delete the original message and any copy of it from your computer system. If you have any questions concerning this message, please contact the sender.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160419/1873bc78/attachment.html>


More information about the vtkusers mailing list