Блоки потоков Bizzare, создающие примитивные массивы - PullRequest
4 голосов
/ 24 марта 2011

Недавно у нас возникла ситуация, когда производственная машина вышла из строя с огромным потоком дампов.Это смоляной веб-сервер, и он дал «Полный дамп потока Java HotSpot (TM) 64-битная виртуальная машина сервера (14.0-b16 смешанный режим):».

Есть тонна заблокированных потоков, но они путаютмне.То есть, один из них:

"resin-8576" daemon prio=10 tid=0x00007f871827b800 nid=0x6b5 waiting for monitor entry [0x00007f864a7e6000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at java.lang.String.toCharArray(String.java:2725)
        at java.lang.Thread.setName(Thread.java:1051)
        at com.caucho.server.port.TcpConnection.run(TcpConnection.java:605)
        at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:730)
        at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:649)
        at java.lang.Thread.run(Thread.java:619)

Код там

char result[] = new char[count];

Другой код

"resin-8574" daemon prio=10 tid=0x00007f8718277800 nid=0x6b3 waiting for monitor entry [0x00007f864a9e8000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at java.lang.String.valueOf(String.java:2840)
        at java.lang.Thread.getName(Thread.java:1061)
        at com.caucho.server.port.TcpConnection.run(TcpConnection.java:603)
        at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:730)
        at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:649)
        at java.lang.Thread.run(Thread.java:619)

Где код строки

return new String(data);

Эти странные места кажутся заблокированными.

Кто-нибудь может предложить причину, по которой эти звонки будут блокироваться?

Спасибо, -kal

1 Ответ

2 голосов
/ 24 марта 2011

Похоже, этот метод можно назвать много и генерировать много мусора. Когда GC запускает эти методы, которые могут выделять объекты во время ожидания GC.

Я бы попробовал более свежую JVM. например Java 6, обновление 24 (в котором JVM build 19 или 20), поскольку у вас более старая JVM.

...