Recientemente me encontré con el siguiente fragmento en una base de código en la que estoy trabajando y agregué el comentario que ves allí. Sé que esta pieza de código en particular se puede reescribir para que sea más limpia, pero me pregunto si mi análisis es correcto.¿Declarar muchas clases idénticas anónimas desperdicia memoria en Java?
Will java crear una nueva declaración de la clase y almacenarlo en la ondulación permanente espacio de generación para cada llamada de este método, o va a saber para reutilizar una declaración existente?
protected List<Object> extractParams(HibernateObjectColumn column, String stringVal) {
// FIXME: could be creating a *lot* of anonymous classes which wastes perm-gen space right?
return new ArrayList<Object>() {
{
add("");
}
};
}
Pero quizás el uso de una clase interna en lugar de una clase anidada estática desperdicia un poco de memoria para el puntero externo $ this (en caso de que no sea necesario). Eso sería memoria de pila, sin embargo. – Thilo
El código duplicado desordena su código y hace que sea más difícil de mantener, eso debería ser más una preocupación. –