title: How to find out which thread holds the monitor?
body: <p>My application is using <code>Gson 2.2</code> for converting <code>POJOs</code> to <code>JSON</code>. When I was making a load test I stumbled upon a lot of threads blocked in <code>Gson</code> constructor:</p>
  
  <pre><code>"http-apr-28201-exec-28" #370 daemon prio=5 os_prio=0 tid=0x0000000001ee7800 nid=0x62cb waiting for monitor entry [0x00007fe64df9a000]
      java.lang.Thread.State: BLOCKED (on object monitor)
      at com.google.gson.Gson.&lt;init&gt;(Gson.java:200)
      at com.google.gson.Gson.&lt;init&gt;(Gson.java:179)
  </code></pre>
  
  <p>Thread dump does NOT show any threads holding <code>[0x00007fe64df9a000] monitor</code>.
  <strong>How can I find out who holds it?</strong></p>
  
  <p><code>Gson</code> code <a href="http://grepcode.com/file/repo1.maven.org/maven2/com.google.code.gson/gson/2.2/com/google/gson/Gson.java?av=f#200">at line 200</a> looks pretty innocent:</p>
  
  <pre><code>// built-in type adapters that cannot be overridden
  factories.add(TypeAdapters.STRING_FACTORY);
  factories.add(TypeAdapters.INTEGER_FACTORY);
  </code></pre>
  
  <p>I'm using <code>JRE 1.8.0_91</code> on <code>Linux</code></p>