線程,它負責編寫插座上(數據量龐大,各地4-5MBPS)被卡住,有時長達15分鐘,然後再次來到操作,然後越來越與部分堆棧跟蹤再次陷入爲:的ObjectOutputStream得到擊中
java.lang.Thread.State: RUNNABLE
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.write(Unknown Source)
- locked <0xa4ca4660> (a java.io.BufferedOutputStream)
mypackage.myMethod()
我立即假設是ObjectWrite越來越block.But這種行爲是不穩定的最好的。 基礎網絡似乎沒問題。在卡住之前,它已經成功地寫了幾個小時。
主題也需要至少休息50毫秒寫入下一塊之前。 所以,如果它不是正常的塊,它可能是什麼?
的pstack:
ff2cba60 send (10, 4dc230, c312, 0)
fe03ce58 Java_java_net_SocketOutputStream_socketWrite0 (3a4928, c312, 10, 95f7f890, 0, c312) + 158
fc093e5c * java/lang/System.getSecurityManager()Ljava/lang/SecurityManager;+3
fc08ec3c * *java/net/SocketOutputStream.socketWrite([BII)V [compiled] +45
fc08ec3c * *java/net/SocketOutputStream.write([BII)V+5
fc005ab0 * java/io/BufferedOutputStream.write([BII)V+20
fc005ab0 * mypackage.mymethod()V+84 (line 598)
你的消費者可以很容易地阻止這種長。例如ObjectInputStream可以創建相當多的垃圾並觸發GC。 –