title: Java thread dump, can't find thread that blocking others
body: <p>Our application is lagging.</p>
  
  <p>I'm get thread dump using <code>jstack</code> util.</p>
  
  <p>I do a data preparation and sort it. And this is what I have:</p>
  
  <pre><code>198    java.lang.Thread.State: BLOCKED (on object monitor)
  
  198    - waiting to lock &lt;0x0000000582e56bc8&gt; (a java.lang.Class for com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector)
  </code></pre>
  
  <p>198 threads are BLOCKED.</p>
  
  <p>As I understand from <code>waiting to lock &lt;0x0000000582e56bc8&gt;</code>, they all waiting some thread with ID <code>0x0000000582e56bc8</code>. The strange thing is that I cannot find this <code>0x0000000582e56bc8</code> in thread dump output, I cannot find what they all waiting for.</p>
  
  <p>Or it is not true? What is this <code>0x0000000582e56bc8</code>?</p>
  
  <p>Here is little peace of dump:</p>
  
  <pre><code>"http-thread-pool-8080(790)" daemon prio=3 tid=0x00000001100fa000 nid=0x339a waiting for monitor entry [0xfffffffeec1f6000]
     java.lang.Thread.State: BLOCKED (on object monitor)
          at com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(AccessorInjector.java:82)
          - waiting to lock &lt;0x0000000582e56bc8&gt; (a java.lang.Class for com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector)
  </code></pre>
  
  <p>All 198 other thread dumps are the same</p>
  
  <p><em>Update 1. After @Holder comment</em></p>
  
  <pre><code>"http-thread-pool-8080(642)" daemon prio=3 tid=0x0000000110a8c800 nid=0x32ec runnable [0xffffffff05af5000]
     java.lang.Thread.State: RUNNABLE
          at java.util.zip.Inflater.inflateBytes(Native Method)
          at java.util.zip.Inflater.inflate(Inflater.java:256)
          - locked &lt;0x000000058f2af0c0&gt; (a java.util.zip.ZStreamRef)
          at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
          at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:122)
          at org.apache.felix.framework.util.WeakZipFileFactory$WeakZipFile$WeakZipInputStream.read(WeakZipFileFactory.java:669)
          at java.io.DataInputStream.readShort(DataInputStream.java:312)
          at com.sun.xml.bind.v2.bytecode.ClassTailor.tailor(ClassTailor.java:173)
          at com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.tailor(AccessorInjector.java:126)
          at com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(AccessorInjector.java:85)
          - locked &lt;0x0000000582e56bc8&gt; (a java.lang.Class for com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector)
          at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:176)
  </code></pre>
  
  <p><strong>Update 2</strong> Thanks for @Holder</p>
  
  <p>As I understand <code>waiting to lock &lt;0x0000000582e56bc8&gt;</code>, means that thread is waiting for <code>0x0000000582e56bc8</code>, which is a pointer. Next you should find <code>- locked &lt;0x0000000582e56bc8&gt;</code>. And you will find Thread that locked an object. Then I looked at stack trace and finally, find the culprit.</p>
  
  <p>If you have also problem with <code>com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector</code>, look at <a href="https://stackoverflow.com/questions/7203893/threads-getting-blocked-jaxb">this question</a>.</p>