vuelva variable una tipos sirve serializacion readobject que puedo prevenir para miembro guardar como clase java performance serializable

variable - ¿Penalización para implementar Serializable en Java?



serializacion c++ (5)

¿Hay una penalización para agregar

implements Serializable

a una clase de Java? ¿Impacto en el tamaño del objeto o el rendimiento instanciado?


A menos que usted / alguien más realmente serialice / deserialice, no habrá ningún impacto. Serializable es solo una interfaz de marcador.

Probablemente solo aumentará el tamaño del bytecode generado en unos pocos bytes.


El costo es cercano a cero, no vale la pena preocuparse.

Algunos detalles adicionales:

  • No hay aumento en el tamaño de cada instancia de objeto
  • Hay un pequeño aumento en el tamaño de la clase en sí, pero como se trata de un costo único, es trivial cuando se amortiza en un gran número de instancias.
  • Puede haber un ligero costo de tiempo de ejecución adicional para cualquier cosa que necesite hacer comprobaciones de interfaz en tiempo de ejecución (reflexión, instancias de búsquedas, presión extra en cachés en línea, etc.). De nuevo, es probable que esto sea insignificante para la mayoría de los propósitos.
  • Serializable es una interfaz de marcador , no hay métodos que requieran implementación. Otros ejemplos de interfaz de marcador son: Clonable, SingleThreadModel, detector de eventos.

No hay impacto en el rendimiento a menos que realice la serialización / deserialización, pero existen compensaciones en términos del diseño de la API.

Desde Effective java por Joshua Bloch

  • Un costo importante de implementar Serializable es que disminuye la flexibilidad para cambiar la implementación de una clase una vez que se ha lanzado
  • Un segundo costo de implementación de Serializable es que aumenta la probabilidad de errores y agujeros de seguridad
  • Un tercer costo de implementar Serializable es que aumenta la carga de prueba asociada con la publicación de una nueva versión de una clase

Hasta qué punto estos son aplicables a usted dependen de su uso.


Siempre debe considerar la sobrecarga de mantenimiento primero. El costo de una aplicación desplegada durante su vida útil puede ser varias veces el costo de desarrollarlo.

En este caso, el costo de hacer una clase Serializable, pero que en realidad no se utiliza para la serialización, podría causar errores o confusión mucho mayor que el costo de rendimiento. por ejemplo, decir que toma 1 minuto o el tiempo de alguien para determinar que el Serializable no es necesario, esto puede costar mucho más que los pocos nano segundos de tiempo de inicio adicionales en que incurre la aplicación.

Si realmente necesita que sea Serializable, no puede compararlo con la versión no serializable porque solo el primer caso realmente hará el trabajo requerido.


Serializable es solo una interfaz de "marcador". No requiere que implemente ningún método.

Lo único es que se recomienda tener un static final long serialVersionUID para ayudar a la API de serialización. Eso cuesta un solo valor long por clase serializada.

Es posible que desee consultar este artículo sobre la API de serialización de Java . Describe la mayoría de las advertencias de serialización / deserialización en detalle.