繁体   English   中英

Java输入流缓冲对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM