"When archiving state to a file, you want object references to work like that."
if i save an object to a file twice, i want the NEW object to be in the file, not the old one.
No, people DON'T want that. That would be disastrous. You're (unintentionally) abusing the API - it is designed for instantaneous saves, or "snapshots", i.e. you serialize "all in one go", then close the stream. It was designed for e.g. saving to disk, or sending a complete set of data in one go - you do NOT want the objects you're saving to change halfway through the save operation!
You are trying to use it as if it were a distributed communications layer, which is a much more complex beast.
how to solve this problem ?
use a simple outputstream and send a bytearray instead of an object ?
You could just close the stream and re-open it when you want to send a new snapshot.
Alternatively, you could try out one of the many distributed-object systems that sounds closer to what you actually want to do, rather than the API you are trying to do it with. For instance, look at RMI (built-in to java).