![](/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.