Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #35437

How do I terminate a JVM properly?

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>

Show all headers | View raw


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


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