簡體   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