Java socket编程 传送数据量大的对象抛出异常

首先server异常如下:java.net.SocketException:Softwarecausedconnectionabort:socketwriteerrora... 首先server异常如下:
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1676)
at java.io.ObjectOutputStream$BlockDataOutputStream.writeByte(ObjectOutputStream.java:1714)
at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1391)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:294)
at xc.socket.server.ServerThread.sendObject(ServerThread.java:81)
at xc.socket.server.ServerThread.run(ServerThread.java:55)
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2200)
at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2490)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2500)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1267)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
at xc.socket.server.ServerThread.run(ServerThread.java:46)
其次client也会发生异常:
Exception in thread "Thread-2" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
我的程序传送的是一个序列化的BufferedImage,发送几次后就出现了以上的异常,如果我换一张小一些的图片,传送的次数就会增加,但到最后仍然会出现以上的异常。。。一下子也不知道怎么解决。也试过调整JVM的内存,但异常还是照常发生。是不是socket不能发送太大容量的Object啊?
由於问题可能没人帮助,所以先给10分,如果解决,我会追加到50或100
展开
 我来答
hanzsim
2009-11-24 · TA获得超过1540个赞
知道小有建树答主
回答量:922
采纳率:0%
帮助的人:1092万
展开全部
你客户端有没有及时接收数据?
收到数据后,不再使用的图片对象=null,然后System.gc(),不信它还能出这个问题?
这个问题原因不在于服务器端,在客房端。
客户接收数据时堆溢出了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4dc7f90
2009-11-24 · TA获得超过1.6万个赞
知道小有建树答主
回答量:1702
采纳率:0%
帮助的人:712万
展开全部
没事干的时候就调用System.gc();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunway00
2009-11-24 · TA获得超过261个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:122万
展开全部
估计应该是内存泄漏。检查是否内存没有及时释放。比如IO传输的内容是否建立了缓存并及时保存,将使用完的对象手动设为null,检查finally 语句块是否正确的完成IO关闭。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
garry1861
2009-11-25 · 超过11用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:9万
展开全部
这是内存溢出,发上原代码来看看
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式