Summary: | Java3D does not dispose correctly after use | ||
---|---|---|---|
Product: | Java3D | Reporter: | iryan |
Component: | core | Assignee: | Phil Jordan <p.j.nz> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | gouessej, p.j.nz |
Priority: | --- | ||
Version: | unspecified | ||
Hardware: | pc_x86_64 | ||
OS: | windows | ||
Type: | FEATURE | SCM Refs: | |
Workaround: | --- |
Description
iryan
2014-12-16 07:36:41 CET
The problem is that the provided thread dump shows no thread created by Java3D except main-SharedResourceRunner, which comes from JOGL. Please try to dispose the Java3D canvas too. I tried setVisible(false), disable (deprecated) on the Canvas3D (since it has no dispose() method), but that doesn't change anything. There seem to be some potentially helpful sounding static methods, but as they aren't public... Looking at that thread dump, the only non-daemon threads left are the AWT EventQueue threads, meaning there is some AWT component that hasn't been disposed....maybe fire up jvisualVM and look for leftover AWT windows? Harvey https://java.net/projects/java3d/pages/Java3DApplicationDev Has a section on this subject, that might be worth looking at Resolved in 1.7.0 All Java3D threads set to daemon Note there is a strong possibility that this could have side effects particularly in headless environments. However a daemon nature is more correct and will allow applications to exit gracefully and when expected. In testing normal swing operations can cause non-exiting. E.g. JFrame f = new JFrame(); f.pack(); will not exit unless f.dispose(); is called. This is unrelated to Java3D. |