activemq----java.io.EOFException

activemq抛出如下异常:
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:375)
at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269)
at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:226)
at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:218)
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:201)
at java.lang.Thread.run(Thread.java:619)
这是因为一遍关闭连接,但另一边仍在做读取这样的操作造成的。
还有个问题。如果客户端关闭了连接,服务器端要知道这个关闭讯息是有点时间延迟的。这段时间里,
服务器端里会驻留一些连接打开的资源。如果并发量较高,客户端关了较为频繁。那么服务器端的驻留
资源越积累越多,这是个不小的隐患。目前可能还看不出来
所以,这个地方服务端的代码从健壮性来看是有问题的。在并发高情形下尤其突出
虽然,最终是会被释放掉。但垃圾收集是有个度量的准则的,如果信息质过大,那么垃圾收集会不堪重负。
这还取决于垃圾收集程序是否健壮,是否高效。实际上,java虚拟机的垃圾收集自始至终都存在不小的问题。
有时,也会有内存泄露。
如果你的连接是连接池分发的,由spring管理的,这里你还要测试下连接池与spring管理连接在高并发下是否
存在问题。这点尤为重要!

你可能感兴趣的:(activemq)