Analizamos qué son las referencias cíclicas en grafos de objetos, por qué son peligrosas para la serialización y cómo manejarlas. Se muestra cómo los flujos estándar de Java —
ObjectOutputStream/
ObjectInputStream — rastrean automáticamente los objetos ya vistos y escriben referencias (handles), evitando
StackOverflowError. Veremos las trampas de la serialización personalizada (
writeObject/
readObject,
defaultWriteObject/
defaultReadObject), así como estrategias para tratar los ciclos en JSON: anotaciones
@JsonIdentityInfo,
@JsonBackReference/
@JsonManagedReference, exclusión de campos mediante
transient y uso de identificadores.