是否可以非常频繁地调用ObjectOutputStream上的reset()?

我读到的地方让我不确定,并寻找另一种方式。 调用reset()过于频繁会对网络造成压力,还是不必要?

我在ObjectOutputStream上使用TCP发送一个对象。 在再次写入之前,对象值会更改。 现在相同的Object但包含不同的值,没有reset()它重新发送在它之前发送的缓存对象的引用,读取后没有任何更改。 由于这种压力,我不确定使用reset()是否是一个好主意。 我应该寻找另一种方式吗?

示例代码如下:

 Socket socket = new Socket(ip, port); BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream()); ObjectOutputStream oos = new ObjectOutputStream(bos); while(true){ oos.writeObject(object); oos.flush(); oos.reset(); object.x++; } 

调用reset()过于频繁会导致网络紧张

什么相比? 如果需要重置,那是因为您需要使用新值传输先前传输的对象。 如果您不需要这样做,请不要调用它。 如果确实需要这样做,网络开销与function要求无关。

或不必要的?

嗯? 翻译好吗?

我在ObjectOutputStream上使用TCP发送一个对象。 在再次写入之前,对象值会更改

所以你需要调用reset()或使用writeUnshared()。

现在相同的Object但包含不同的值,没有reset()它重新发送在它之前发送的缓存对象的引用,读取后没有任何更改。

正确。 所以你不能这样做。

由于这种压力,我不确定使用reset()是否是一个好主意。

什么压力? 唯一的“压力”是你传递物体的新价值,而你的function要求决定了你必须这样做。 所以你没有选择。

我应该寻找另一种方式吗?

没有别的办法。 要么必须传输对象的新值,要么不传输。 如果这样做,所有解决方案都基本相同。 如果你不这样做,不要。