Ускорение операций глубокого копирования Java
Мы реализовали механизм глубокого копирования общего назначения с использованием сериализации.
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;
}
}
Существует относительно большое количество классов объектов, которые постоянно развиваются, чтобы их поддерживать - это было причиной, по которой мы применили механизм клонирования общего назначения. Нам не нравилась идея сохраненияreadObject()
а такжеwriteObject()
на 200+ классов.
К сожалению, механизм сериализации в Java относительно медленный, и мы испытываем проблемы, когда наша система находится в пиковой нагрузке.
Существуют ли предложенные подходы о том, как мы можем немного ускорить процесс или (если мы это неправильно выполнили) альтернативные методы клонирования объектов?