Acelerando las operaciones de copia profunda de Java

Hemos implementado un mecanismo de copia profunda de uso general mediante la serialización.

import java.io.*;

public class CopyUtil {

    public static Object clone(Object source) {
        Object retVal = null;
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeObject(source);
            oos.flush();
            oos.close();

            ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
            retVal = in.readObject();
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }

        return retVal;
    }
}

Hay un número relativamente grande de clases de objetos, que están evolucionando todo el tiempo, para mantener: esta fue la razón por la cual procedimos con un mecanismo de clonación de propósito general. No nos gustó la idea de mantenerreadObject() ywriteObject() en más de 200 clases.

Lamentablemente, el mecanismo de serialización en Java es relativamente lento y estamos experimentando problemas cuando nuestro sistema está bajo carga máxima.

¿Hay algún enfoque sugerido sobre cómo podemos acelerar un poco las cosas o (en caso de que lo hayamos hecho incorrectamente) métodos alternativos para clonar objetos?

Respuestas a la pregunta(2)

Su respuesta a la pregunta