Intenta Evitar la Creación de Objetos Innecesarios
1. Intenta Evitar la Creación de Objetos Innecesarios #
La creación de objetos en tiempo de ejecución consume memoria y recursos debido a la asignación de memoria y la recolección de basura (garbage collection). Cuando un objeto se crea muchas veces dentro de un bucle o método, puede causar un uso ineficiente de la memoria y un impacto negativo en el rendimiento.
Estrategias para evitar la creación innecesaria de objetos: #
- Reutilizar objetos existentes en lugar de crear nuevos cada vez.
- Usar tipos primitivos en lugar de objetos cuando sea posible.
- Utilizar estructuras de datos eficientes, como pools de objetos o singleton si el objeto se usará repetidamente.
- Evitar la creación de cadenas de texto innecesarias, preferir
StringBuilderen lugar deStringen Java. - Usar métodos estáticos para evitar la sobrecarga de instanciar una clase.
2. Ejemplo incorrecto: Creación innecesaria de objetos en cada iteración #
En este caso, se está creando un nuevo objeto en cada iteración del bucle, lo que consume más memoria y afecta el rendimiento.
3. Ejemplo optimizado: Reutilización del objeto #
Aquí se crea el objeto una sola vez y se reutiliza, lo que reduce el uso innecesario de memoria.
✅ Beneficios de la optimización:
- Menos uso de memoria.
- Mejor rendimiento en bucles grandes.
- Menos carga para el recolector de basura.
✅ Beneficios:
- Evita la creación innecesaria de objetos.
- Reduce el consumo de memoria.
- Mayor eficiencia en operaciones de concatenación.
4. Ejemplo incorrecto: Creación repetida de fechas en cada iteración #
En este caso, se crean múltiples objetos de fecha en cada iteración.
Optimización: Crear la fecha una sola vez #
✅ Beneficios:
- Evita la creación innecesaria de objetos en cada iteración.
- Menos carga en el recolector de basura.
5. Ejemplo incorrecto: Creación de objetos en un método llamado repetidamente #
Cada vez que el método es llamado, se crea un nuevo objeto.
Optimización: Usar un Singleton o variable estática #
Si el objeto se usa repetidamente, podemos crearlo una sola vez.
✅ Beneficios:
- Mejor uso de memoria.
- Evita múltiples instancias del mismo objeto.
Resumen del tema
Conceptos clave #
- Sobrecarga de Instanciación en Heap: crear objetos dentro de bucles o funciones frecuentes satura la memoria dinámica y desencadena pausas del Garbage Collector (GC).
- Patrones de Reutilización:
- Reutilización de instancias únicas mediante constantes estáticas (
static final) o patrón Singleton. - Reutilización de objetos fecha o formateadores fuera de los bucles de procesamiento.
- Reutilización de instancias únicas mediante constantes estáticas (
- Tipos Primitivos vs Wrappers: preferir valores primitivos (
int,double,boolean) para evitar costes de auto-boxing e indirección de memoria.
Qué debes recordar #
Evita instanciar objetos dentro de bucles o métodos repetitivos; reutiliza instancias, usa tipos primitivos y aplica Singletons o caches cuando sea factible.