java - 帮助理解 jstack 输出

标签 java locking jstack mixed-code

我有一个通过 Java Webstart 部署的桌面 Java/Swing 应用程序(客户端在 XP 上使用 Java 6u20)。我收到了来自应用程序挂起用户的断断续续的报告。我设法在挂起期间登录到这样的系统,发现 UI 没有被绘制(好像 EDT 被阻止了)。

我使用 jstack 来列出线程;我没有看到任何关于输出死锁的提及,因为我是 jstack 的新手,所以我不确定我还应该寻找什么。

我不得不编辑堆栈跟踪以使其符合 stackoverflow 限制,希望没有遗漏任何重要信息。

谢谢,
菲尔

Full thread dump Java HotSpot(TM) Client VM (16.3-b01 mixed mode, sharing):

"AWT-EventQueue-0" prio=6 tid=0x03e3f000 nid=0xe44 in Object.wait() [0x0516f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.awt.EventQueue.getNextEvent(Unknown Source)
    - locked <0x1d4b91d8> (a java.awt.EventQueue)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    <SNIP>

   Locked ownable synchronizers:
    - None

"ServerThread" prio=6 tid=0x058f7c00 nid=0xa08 waiting for monitor entry [0x055be000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.check(Unknown Source)
    - waiting to lock <0x1d485f80> (a com.sun.deploy.security.CPCallbackHandler$ParentCallback)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.access$1400(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler$ChildElement.checkResource(Unknown Source)
    at com.sun.deploy.security.DeployURLClassPath$JarLoader.checkResource(Unknown Source)
    at com.sun.deploy.security.DeployURLClassPath$JarLoader.getResource(Unknown Source)
    at com.sun.deploy.security.DeployURLClassPath$JarLoader.findResource(Unknown Source)
    at com.sun.deploy.security.DeployURLClassPath.findResource(Unknown Source)
    at java.net.URLClassLoader$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findResource(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.findResource(Unknown Source)
    at java.lang.ClassLoader.getResource(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.access$001(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.jnlp.JNLPClassLoader.getResource(Unknown Source)
    at java.lang.ClassLoader.getResourceAsStream(Unknown Source)
    at java.util.ResourceBundle$Control$1.run(Unknown Source)
    at java.util.ResourceBundle$Control$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.util.ResourceBundle$Control.newBundle(Unknown Source)
    at java.util.ResourceBundle.loadBundle(Unknown Source)
    at java.util.ResourceBundle.findBundle(Unknown Source)
    at java.util.ResourceBundle.findBundle(Unknown Source)
    at java.util.ResourceBundle.getBundleImpl(Unknown Source)
    at java.util.ResourceBundle.getBundle(Unknown Source)
    at org.apache.derby.iapi.services.i18n.MessageService.getBundleWithEnDefault(Unknown Source)
    at org.apache.derby.iapi.services.i18n.MessageService.getBundleForLocale(Unknown Source)
    at org.apache.derby.impl.services.monitor.BaseMonitor.getBundle(Unknown Source)
    at org.apache.derby.iapi.services.i18n.MessageService.getBundle(Unknown Source)
    at org.apache.derby.iapi.services.i18n.MessageService.getCompleteMessage(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(Unknown Source)
    at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    - locked <0x1c233300> (a org.apache.derby.impl.jdbc.EmbedConnection40)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    <SNIP>

   Locked ownable synchronizers:
    - None

"ServerThread" prio=6 tid=0x058e7800 nid=0x2c0 waiting for monitor entry [0x082de000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.check(Unknown Source)
    - waiting to lock <0x1d485f80> (a com.sun.deploy.security.CPCallbackHandler$ParentCallback)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.access$1400(Unknown Source)
    <SNIP>
    at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    - locked <0x1c1bf748> (a org.apache.derby.impl.jdbc.EmbedConnection40)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    at com.foo.myapp.dataaccess.sql.PriceSql.<init>(PriceSql.java:120)
    at com.foo.myapp.dataaccess.sql.SqlServer.<init>(SqlServer.java:124)
    at com.foo.myapp.dataaccess.socket.ServerThread.run(ServerThread.java:154)

   Locked ownable synchronizers:
    - None

"ServerThread" prio=6 tid=0x04337000 nid=0xff4 waiting for monitor entry [0x0828e000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.check(Unknown Source)
    - waiting to lock <0x1d485f80> (a com.sun.deploy.security.CPCallbackHandler$ParentCallback)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.access$1400(Unknown Source)
    <SNIP>
    at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    - locked <0x1c176a80> (a org.apache.derby.impl.jdbc.EmbedConnection40)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    at com.foo.myapp.dataaccess.sql.PriceSql.<init>(PriceSql.java:201)
    at com.foo.myapp.dataaccess.sql.SqlServer.<init>(SqlServer.java:124)
    at com.foo.myapp.dataaccess.socket.ServerThread.run(ServerThread.java:154)

   Locked ownable synchronizers:
    - None

"ServerThread" prio=6 tid=0x05913400 nid=0xd5c in Object.wait() [0x0823e000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at com.sun.javaws.ui.JavawsSysRun.delegate(Unknown Source)
    - locked <0x1d430890> (a java.lang.Object)
    at com.sun.deploy.util.DeploySysRun.execute(Unknown Source)
    at com.sun.deploy.util.DeploySysRun$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.deploy.util.DeploySysRun.executePrivileged(Unknown Source)
    at com.sun.deploy.ui.UIFactory.showMixedCodeDialog(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler.showMixedTrustDialog(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler.access$1000(Unknown Source)
    <SNIP>
    at com.foo.myapp.dataaccess.sql.SqlServer.<init>(SqlServer.java:124)
    at com.foo.myapp.dataaccess.socket.ServerThread.run(ServerThread.java:154)

   Locked ownable synchronizers:
    - None

"ServerThread" prio=6 tid=0x043bd400 nid=0xb44 waiting for monitor entry [0x081ee000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.check(Unknown Source)
    - waiting to lock <0x1d485f80> (a com.sun.deploy.security.CPCallbackHandler$ParentCallback)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.access$1400(Unknown Source)
    <SNIP>
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    - locked <0x1c01d1f0> (a org.apache.derby.impl.jdbc.EmbedConnection40)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    at com.foo.myapp.dataaccess.sql.SkuSql.<init>(SkuSql.java:539)
    at com.foo.myapp.dataaccess.sql.TransactionEntrySql.<init>(TransactionEntrySql.java:143)
    at com.foo.myapp.dataaccess.sql.SqlServer.<init>(SqlServer.java:137)
    at com.foo.myapp.dataaccess.socket.ServerThread.run(ServerThread.java:154)

   Locked ownable synchronizers:
    - None

"ServerThread" prio=6 tid=0x0438a800 nid=0xccc waiting for monitor entry [0x0819e000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.check(Unknown Source)
    - waiting to lock <0x1d485f80> (a com.sun.deploy.security.CPCallbackHandler$ParentCallback)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.access$1400(Unknown Source)
    <SNIP>
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    - locked <0x1b043cb0> (a org.apache.derby.impl.jdbc.EmbedConnection40)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    at com.foo.myapp.dataaccess.sql.HierarchyGroupSql.<init>(HierarchyGroupSql.java:53)
    at com.foo.myapp.dataaccess.sql.SqlServer.<init>(SqlServer.java:144)
    at com.foo.myapp.dataaccess.socket.ServerThread.run(ServerThread.java:154)

   Locked ownable synchronizers:
    - None

"ServerThread" prio=6 tid=0x04324c00 nid=0x214 waiting for monitor entry [0x0814e000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.check(Unknown Source)
    - waiting to lock <0x1d485f80> (a com.sun.deploy.security.CPCallbackHandler$ParentCallback)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.access$1400(Unknown Source)
    <SNIP>
    at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
    - locked <0x1bc4c8b8> (a org.apache.derby.impl.jdbc.EmbedConnection40)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(Unknown Source)
    at com.foo.myapp.dataaccess.sql.SkuSql.updateProductDescriptors(SkuSql.java:1050)
    at com.foo.myapp.dataaccess.sql.SkuSql.run(SkuSql.java:918)
    at com.foo.myapp.dataaccess.sql.SqlServerBase.exec(SqlServerBase.java:68)
    at com.foo.myapp.dataaccess.socket.ServerThread.processTransaction(ServerThread.java:215)
    at com.foo.myapp.dataaccess.socket.ServerThread.run(ServerThread.java:161)

   Locked ownable synchronizers:
    - None

"Timer-1232" prio=6 tid=0x042e5400 nid=0xcbc in Object.wait() [0x080ff000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.util.TimerThread.mainLoop(Unknown Source)
    - locked <0x1b849c78> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Timer-1225" prio=6 tid=0x04227800 nid=0xcc in Object.wait() [0x0800f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.util.TimerThread.mainLoop(Unknown Source)
    - locked <0x1b5147f8> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Timer-1200" prio=6 tid=0x041bec00 nid=0x9cc in Object.wait() [0x080af000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.util.TimerThread.mainLoop(Unknown Source)
    - locked <0x1a977a20> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Unknown Source)

   Locked ownable synchronizers:
    - None


[SNIPPED about 70 Timer tasks]


"AWT-EventQueue-1" prio=6 tid=0x0420c800 nid=0xdb4 in Object.wait() [0x0729f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.awt.EventQueue.getNextEvent(Unknown Source)
    - locked <0x1d492480> (a java.awt.EventQueue)
    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.SequencedEvent.dispatch(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.pumpEventsForFilter(Unknown Source)
    at java.awt.Dialog$1.run(Unknown Source)
    at java.awt.Dialog$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Unknown Source)
    at java.awt.Component.show(Unknown Source)
    at java.awt.Component.setVisible(Unknown Source)
    at java.awt.Window.setVisible(Unknown Source)
    at java.awt.Dialog.setVisible(Unknown Source)
    at com.sun.deploy.ui.DialogTemplate$12.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(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)

   Locked ownable synchronizers:
    - None

"SwingWorker-pool-1-thread-1" daemon prio=6 tid=0x03d23400 nid=0xf18 waiting on condition [0x031bf000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x22294b78> (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.LinkedBlockingQueue.take(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Thread-24" prio=6 tid=0x03f1cc00 nid=0xe20 runnable [0x0565f000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(Unknown Source)
    - locked <0x1fc03898> (a java.net.SocksSocketImpl)
    at java.net.ServerSocket.implAccept(Unknown Source)
    at java.net.ServerSocket.accept(Unknown Source)
    at com.foo.myapp.ApplicationRunner$6.run(ApplicationRunner.java:962)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Thread-20" prio=6 tid=0x03f2c800 nid=0xba8 waiting on condition [0x0551f000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at com.foo.myapp.UserActivityMonitor.run(UserActivityMonitor.java:42)

   Locked ownable synchronizers:
    - None


"TimerQueue" daemon prio=6 tid=0x02d34400 nid=0x9d8 in Object.wait() [0x04c8f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at javax.swing.TimerQueue.run(Unknown Source)
    - locked <0x1ea5c8d0> (a javax.swing.TimerQueue)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"derby.rawStoreDaemon" daemon prio=6 tid=0x03ec8000 nid=0x584 in Object.wait() [0x0525f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.apache.derby.impl.services.daemon.BasicDaemon.rest(Unknown Source)
    - locked <0x1da8f898> (a org.apache.derby.impl.services.daemon.BasicDaemon)
    at org.apache.derby.impl.services.daemon.BasicDaemon.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Timer-1" daemon prio=6 tid=0x03ec3000 nid=0x2cc in Object.wait() [0x0520f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x1d816590> (a java.util.TaskQueue)
    at java.lang.Object.wait(Object.java:485)
    at java.util.TimerThread.mainLoop(Unknown Source)
    - locked <0x1d816590> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"derby.antiGC" daemon prio=2 tid=0x03e84000 nid=0xf70 in Object.wait() [0x051bf000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x1d804090> (a org.apache.derby.impl.services.monitor.AntiGC)
    at java.lang.Object.wait(Object.java:485)
    at org.apache.derby.impl.services.monitor.AntiGC.run(Unknown Source)
    - locked <0x1d804090> (a org.apache.derby.impl.services.monitor.AntiGC)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Timer-0" prio=6 tid=0x03e71800 nid=0x7c in Object.wait() [0x0511f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x1d7e7b08> (a java.util.TaskQueue)
    at java.lang.Object.wait(Object.java:485)
    at java.util.TimerThread.mainLoop(Unknown Source)
    - locked <0x1d7e7b08> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"AWT-Shutdown" prio=6 tid=0x03f58000 nid=0xad0 in Object.wait() [0x04bdf000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at sun.awt.AWTAutoShutdown.run(Unknown Source)
    - locked <0x1d480cc8> (a java.lang.Object)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"NativeSwing Receiver - Swing" daemon prio=6 tid=0x03ed7400 nid=0x80c runnable [0x03dff000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.io.BufferedInputStream.fill(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    - locked <0x1d840e50> (a java.io.BufferedInputStream)
    at java.io.ObjectInputStream$PeekInputStream.peek(Unknown Source)
    at java.io.ObjectInputStream$BlockDataInputStream.peek(Unknown Source)
    at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readUnshared(Unknown Source)
    at chrriis.dj.nativeswing.swtimpl.OutProcessMessagingInterface.readMessageFromChannel(OutProcessMessagingInterface.java:113)
    at chrriis.dj.nativeswing.swtimpl.MessagingInterface$2.run(MessagingInterface.java:329)

   Locked ownable synchronizers:
    - None

"NativeSwing Stream Connector" daemon prio=6 tid=0x03ca6800 nid=0xf30 runnable [0x03daf000]
   java.lang.Thread.State: RUNNABLE
    at java.io.FileInputStream.readBytes(Native Method)
    at java.io.FileInputStream.read(Unknown Source)
    at java.io.BufferedInputStream.read1(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    - locked <0x1d83c338> (a java.io.BufferedInputStream)
    at java.io.BufferedInputStream.fill(Unknown Source)
    at java.io.BufferedInputStream.read1(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    - locked <0x1d83c358> (a java.io.BufferedInputStream)
    at java.io.FilterInputStream.read(Unknown Source)
    at chrriis.dj.nativeswing.swtimpl.NativeInterface$OutProcess$1.run(NativeInterface.java:696)

   Locked ownable synchronizers:
    - None

"NativeSwing Stream Connector" daemon prio=6 tid=0x03ca6400 nid=0xdf4 runnable [0x0382f000]
   java.lang.Thread.State: RUNNABLE
    at java.io.FileInputStream.readBytes(Native Method)
    at java.io.FileInputStream.read(Unknown Source)
    at java.io.BufferedInputStream.fill(Unknown Source)
    at java.io.BufferedInputStream.read1(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    - locked <0x1d83e840> (a java.io.BufferedInputStream)
    at java.io.FilterInputStream.read(Unknown Source)
    at chrriis.dj.nativeswing.swtimpl.NativeInterface$OutProcess$1.run(NativeInterface.java:696)

   Locked ownable synchronizers:
    - None

"WebServer" daemon prio=6 tid=0x03caa800 nid=0x464 runnable [0x037cf000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(Unknown Source)
    - locked <0x1d83ed08> (a java.net.SocksSocketImpl)
    at java.net.ServerSocket.implAccept(Unknown Source)
    at java.net.ServerSocket.accept(Unknown Source)
    at chrriis.common.WebServer$1.run(WebServer.java:719)

   Locked ownable synchronizers:
    - None

"TimerQueue" daemon prio=6 tid=0x036c3800 nid=0x304 in Object.wait() [0x038ef000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x1d430658> (a javax.swing.TimerQueue)
    at javax.swing.TimerQueue.run(Unknown Source)
    - locked <0x1d430658> (a javax.swing.TimerQueue)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"CacheCleanUpThread" daemon prio=6 tid=0x02dd3000 nid=0xa0 in Object.wait() [0x034af000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x1d430698> (a com.sun.deploy.cache.CleanupThread)
    at java.lang.Object.wait(Object.java:485)
    at com.sun.deploy.cache.CleanupThread.run(Unknown Source)
    - locked <0x1d430698> (a com.sun.deploy.cache.CleanupThread)

   Locked ownable synchronizers:
    - None

"CacheMemoryCleanUpThread" daemon prio=6 tid=0x02dd1800 nid=0x14c in Object.wait() [0x0345f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    - locked <0x1d430790> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"DestroyJavaVM" prio=6 tid=0x003a8800 nid=0xc00 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Javaws Secure Thread" daemon prio=6 tid=0x02dca400 nid=0x750 in Object.wait() [0x033bf000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.awt.EventQueue.invokeAndWait(Unknown Source)
    - locked <0x32961e48> (a java.awt.EventQueue$1AWTInvocationLock)
    at javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
    at com.sun.deploy.ui.DialogTemplate.setVisible(Unknown Source)
    at com.sun.deploy.ui.UIFactory$8.execute(Unknown Source)
    at com.sun.javaws.ui.JavawsSysRun$SecureThread.doWork(Unknown Source)
    at com.sun.javaws.ui.JavawsSysRun$SecureThread.run(Unknown Source)
    - locked <0x1d430890> (a java.lang.Object)

   Locked ownable synchronizers:
    - None

"AWT-Windows" daemon prio=6 tid=0x02dc8c00 nid=0xa28 runnable [0x00a0f000]
   java.lang.Thread.State: RUNNABLE
    at sun.awt.windows.WToolkit.eventLoop(Native Method)
    at sun.awt.windows.WToolkit.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Java2D Disposer" daemon prio=10 tid=0x02dc6800 nid=0xad4 in Object.wait() [0x032cf000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    - locked <0x1d430968> (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)

   Locked ownable synchronizers:
    - None

"traceMsgQueueThread" daemon prio=6 tid=0x02d3ec00 nid=0xf74 in Object.wait() [0x0322f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at com.sun.deploy.util.Trace$TraceMsgQueueChecker.run(Unknown Source)
    - locked <0x1d4309f8> (a java.util.ArrayList)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Low Memory Detector" daemon prio=6 tid=0x02d0f400 nid=0x6dc runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"CompilerThread0" daemon prio=10 tid=0x02d09800 nid=0x484 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Attach Listener" daemon prio=10 tid=0x02d07c00 nid=0xf60 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Signal Dispatcher" daemon prio=10 tid=0x02d06800 nid=0xdf0 runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Finalizer" daemon prio=8 tid=0x02cfec00 nid=0x290 in Object.wait() [0x02ecf000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    - locked <0x1d430c20> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

   Locked ownable synchronizers:
    - None

"Reference Handler" daemon prio=10 tid=0x02cfd400 nid=0x3a4 in Object.wait() [0x02e7f000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
    - locked <0x1d4304a8> (a java.lang.ref.Reference$Lock)

   Locked ownable synchronizers:
    - None

"VM Thread" prio=10 tid=0x02cfc000 nid=0xc30 runnable 

"VM Periodic Task Thread" prio=10 tid=0x02d1a000 nid=0x840 waiting on condition 

JNI global references: 2314

最佳答案

您可能遇到了错误 6960427 ,这是针对 1.6.0_20 的报告(死锁问题)。

您确定发布的堆栈跟踪是完整的吗?您有多个线程等待锁定 0x1d485f80,但没有线程在该监视器上具有实际锁定。

关于java - 帮助理解 jstack 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3576407/

相关文章:

java - 如何为项目列表设置默认值?

java - 如何创建带参数的工厂方法?

java - 将 UDP 套接字绑定(bind)到多个端口

c# - 锁定创建 ID 的对象

java - 分析Java线程转储

java - Restful Web Services生成rsdl文档

c# - 这个线程安全吗?

c++ - C++中读写锁的实现

c++ - C++ 中的 jstack 等价物

java - pyCharm调试: JRE without jstack?