![](/img/trans.png)
[英]Java: ignoring an input stream - will buffers overflow and bad things happen?
[英]Java input stream buffers object?
我有一个客户端 - 服务器应用程序,每次新的客户端套接字加入时,服务器都会向所有客户端发送所有客户端的列表。 问题是,当新客户端加入它时会得到正确的列表,但旧客户端会获得他们加入时自己获得的旧列表。 有点像它们每次从输入流中获取相同的对象。
我可以以某种方式刷新输入流吗?
阅读对象:
while((inObject = in.readObject()) != null) {
...
}
发送对象:
out.writeObject(object);
ObjectOutputStream.reset()
是您正在寻找的。
它还可以防止内存不足,否则可能会发生内存不足。 原因是ObjectInput / OutputStream类缓存了通过它们发送的所有对象,这也防止了这些对象被垃圾收集。 这是处理循环引用所必需的,并且还可以在多次发送对象时提高性能。
我怀疑问题是您正在修改现有对象,然后重用现有的ObjectOutputStream
。 在ObjectOutputStream
上调用reset
以有效清除其对可能修改的对象的引用的缓存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.