Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #35437
| Newsgroups | comp.lang.java.programmer |
|---|---|
| Date | 2016-08-24 08:14 -0700 |
| Message-ID | <dd3f22ed-83df-4f1d-8a4a-180fa6ee12c2@googlegroups.com> (permalink) |
| Subject | How do I terminate a JVM properly? |
| From | Eric Douglas <e.d.programmer@gmail.com> |
I don't want to call System.exit(). After I dispose the last GUI object the JVM should terminate itself. I can't see anything in the code that is not properly closed. I run this in webstart and my client console stays open. I press 'v' to get the thread dump and it shows me this, but I'm not sure what it's telling me. Dump thread stack ... ---------------------------------------------------- 2016-08-24 11:07:56 Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.102-b14 mixed mode): "TimerQueue" #61 daemon prio=5 os_prio=0 tid=0x000000001cbee800 nid=0x1c34 waiting on condition [0x00000000222ae000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000d5c70d38> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(Unknown Source) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) at java.util.concurrent.DelayQueue.take(Unknown Source) at javax.swing.TimerQueue.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-2" #58 prio=6 os_prio=0 tid=0x000000001cbf2000 nid=0x1498 waiting on condition [0x00000000224af000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000081402520> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(Unknown Source) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) at java.awt.EventQueue.getNextEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "D3D Screen Updater" #45 daemon prio=7 os_prio=1 tid=0x000000001cbf0800 nid=0x1db8 in Object.wait() [0x00000000205ff000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at sun.java2d.d3d.D3DScreenUpdateManager.run(Unknown Source) - locked <0x00000000811aa4d8> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "CacheCleanUpThread" #28 daemon prio=5 os_prio=0 tid=0x000000001cbed800 nid=0xc20 in Object.wait() [0x000000001f2ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0000000081229540> (a com.sun.deploy.cache.CleanupThread) at java.lang.Object.wait(Unknown Source) at com.sun.deploy.cache.CleanupThread.run(Unknown Source) - locked <0x0000000081229540> (a com.sun.deploy.cache.CleanupThread) "CacheMemoryCleanUpThread" #25 daemon prio=5 os_prio=0 tid=0x000000001cbef000 nid=0xd40 in Object.wait() [0x000000001f1ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x00000000811e6958> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown Source) "MemoryCache-DelayedCleanup" #26 daemon prio=5 os_prio=0 tid=0x000000001cb24000 nid=0x1b48 in Object.wait() [0x000000001f0fe000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x000000008128f658> (a java.util.TaskQueue) at java.util.TimerThread.mainLoop(Unknown Source) - locked <0x000000008128f658> (a java.util.TaskQueue) at java.util.TimerThread.run(Unknown Source) "TimerQueue" #23 daemon prio=5 os_prio=0 tid=0x000000001ca98000 nid=0x1110 waiting on condition [0x000000001edfe000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000812904d0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(Unknown Source) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) at java.util.concurrent.DelayQueue.take(Unknown Source) at javax.swing.TimerQueue.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "ConsoleTraceListener" #22 daemon prio=5 os_prio=0 tid=0x000000001ca78800 nid=0x1274 in Object.wait() [0x000000001ecff000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$ConsoleWriterThread.run(Unknown Source) - locked <0x0000000081290820> (a com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer) "AWT-EventQueue-1" #21 prio=6 os_prio=0 tid=0x000000001c95c000 nid=0x1cf8 waiting on condition [0x000000001d98c000] java.lang.Thread.State: RUNNABLE at com.sun.deploy.uitoolkit.ui.ConsoleHelper.dumpAllStacksImpl(Native Method) at com.sun.deploy.uitoolkit.ui.ConsoleHelper.dumpAllStacks(Unknown Source) at com.sun.deploy.uitoolkit.impl.awt.ui.SwingConsoleWindow$3.actionPerformed(Unknown Source) at javax.swing.JComponent$ActionStandin.actionPerformed(Unknown Source) at javax.swing.SwingUtilities.notifyAction(Unknown Source) at javax.swing.JComponent.processKeyBinding(Unknown Source) at javax.swing.KeyboardManager.fireBinding(Unknown Source) at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source) at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown Source) at javax.swing.JComponent.processKeyBindings(Unknown Source) at javax.swing.JComponent.processKeyEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "DestroyJavaVM" #20 prio=5 os_prio=0 tid=0x0000000002c16000 nid=0x1e70 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Javaws Secure Thread" #18 daemon prio=5 os_prio=0 tid=0x000000001c953000 nid=0x1c68 in Object.wait() [0x000000001d58f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Unknown Source) at com.sun.javaws.ui.JavawsSysRun$SecureThread.run(Unknown Source) - locked <0x00000000812918f8> (a java.lang.Object) "AWT-EventQueue-0" #17 prio=6 os_prio=0 tid=0x000000001c94f000 nid=0xcdc waiting on condition [0x000000001d38e000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000081239670> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(Unknown Source) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) at java.awt.EventQueue.getNextEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "AWT-Windows" #15 daemon prio=6 os_prio=0 tid=0x000000001c941800 nid=0x1874 runnable [0x0000000000e8f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) "AWT-Shutdown" #14 prio=5 os_prio=0 tid=0x000000001c93f800 nid=0x1bbc in Object.wait() [0x000000001d28f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Unknown Source) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0000000081207680> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" #13 daemon prio=10 os_prio=2 tid=0x000000001c93f000 nid=0x1ec8 in Object.wait() [0x000000001d18e000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x00000000811222d8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "traceMsgQueueThread" #11 daemon prio=5 os_prio=0 tid=0x000000001b3e0000 nid=0x1a80 runnable [0x000000001c87e000] java.lang.Thread.State: RUNNABLE at java.io.WinNTFileSystem.getLength(Native Method) at java.io.File.length(Unknown Source) at com.sun.deploy.trace.FileTraceListener.print(Unknown Source) at com.sun.deploy.trace.Trace.firePrintlnEvent(Unknown Source) at com.sun.deploy.trace.Trace.access$200(Unknown Source) at com.sun.deploy.trace.Trace$TraceMsgQueueChecker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Service Thread" #10 daemon prio=9 os_prio=0 tid=0x000000001b38a000 nid=0xb4c runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C1 CompilerThread3" #9 daemon prio=9 os_prio=2 tid=0x000000001b2eb800 nid=0x1e5c runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C2 CompilerThread2" #8 daemon prio=9 os_prio=2 tid=0x000000001b2e8000 nid=0x1ce0 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C2 CompilerThread1" #7 daemon prio=9 os_prio=2 tid=0x000000001b2e7800 nid=0x1cac waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C2 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x000000001b2d9800 nid=0x1ed4 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x000000001b2d8800 nid=0x17d0 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x000000001b2d5800 nid=0x1f48 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Finalizer" #3 daemon prio=8 os_prio=1 tid=0x0000000018218000 nid=0x1904 in Object.wait() [0x000000001b89e000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x00000000810ce3f0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x000000001b2c0800 nid=0x11cc in Object.wait() [0x000000001b79f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Unknown Source) at java.lang.ref.Reference.tryHandlePending(Unknown Source) - locked <0x00000000813f1e58> (a java.lang.ref.Reference$Lock) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) "VM Thread" os_prio=2 tid=0x0000000018208000 nid=0xd8 runnable "GC task thread#0 (ParallelGC)" os_prio=0 tid=0x0000000002c2c000 nid=0x17e0 runnable "GC task thread#1 (ParallelGC)" os_prio=0 tid=0x0000000002c2d800 nid=0x7f0 runnable "GC task thread#2 (ParallelGC)" os_prio=0 tid=0x0000000002c2f000 nid=0x1280 runnable "GC task thread#3 (ParallelGC)" os_prio=0 tid=0x0000000002c30800 nid=0x1f68 runnable "GC task thread#4 (ParallelGC)" os_prio=0 tid=0x0000000002c33000 nid=0x1ee4 runnable "GC task thread#5 (ParallelGC)" os_prio=0 tid=0x0000000002c34000 nid=0x1df8 runnable "GC task thread#6 (ParallelGC)" os_prio=0 tid=0x0000000002c38000 nid=0x1e60 runnable "GC task thread#7 (ParallelGC)" os_prio=0 tid=0x0000000002c39000 nid=0x1e50 runnable "VM Periodic Task Thread" os_prio=2 tid=0x000000001b3db000 nid=0x1c1c waiting on condition 0 tid=0x0000000002c38000 nid=0x1e60 runnable "GC task thread#7 (ParallelGC)" os_prio=0 tid=0x0000000002c39000 nid=0x1e50 runnable "VM Periodic Task Thread" os_prio=2 tid=0x000000001b3db000 nid=0x1c1c waiting on condition ---------------------------------------------------- Done.
Back to comp.lang.java.programmer | Previous | Next — Next in thread | Find similar | Unroll thread
How do I terminate a JVM properly? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-24 08:14 -0700
Re: How do I terminate a JVM properly? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-24 14:00 -0700
Re: How do I terminate a JVM properly? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-08-24 17:39 -0400
Re: How do I terminate a JVM properly? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-25 05:24 -0700
Re: How do I terminate a JVM properly? Nigel Wade <nmw@local.domain> - 2016-08-25 13:52 +0100
Re: How do I terminate a JVM properly? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-25 06:05 -0700
Re: How do I terminate a JVM properly? Nigel Wade <nmw@local.domain> - 2016-08-25 15:04 +0100
Re: How do I terminate a JVM properly? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-25 08:20 -0700
Re: How do I terminate a JVM properly? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-08-25 15:55 -0400
Re: How do I terminate a JVM properly? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-25 13:35 -0700
Re: How do I terminate a JVM properly? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-08-25 16:58 -0400
Re: How do I terminate a JVM properly? Arne Vajhøj <arne@vajhoej.dk> - 2016-08-28 13:29 -0400
Re: How do I terminate a JVM properly? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-08-28 13:53 -0400
Re: How do I terminate a JVM properly? Arne Vajhøj <arne@vajhoej.dk> - 2016-08-28 14:14 -0400
Re: How do I terminate a JVM properly? Eric Douglas <e.d.programmer@gmail.com> - 2016-08-25 05:52 -0700
Re: How do I terminate a JVM properly? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-08-24 18:19 -0400
Re: How do I terminate a JVM properly? Lew <lewbloch@gmail.com> - 2016-08-24 16:12 -0700
Re: How do I terminate a JVM properly? Roedy Green <inquiry@mindprod.com> - 2016-08-30 16:34 -0700
csiph-web