Why doesn't java.io.ObjectOutputStream use weak references?