Estoy tomando algunas aplicaciones de un desarrollador anterior. Cuando ejecuto las aplicaciones a través de Eclipse, veo que el uso de la memoria y el tamaño del almacenamiento dinámico aumentan mucho. Tras una investigación más a fondo, veo que estaban creando un objeto una y otra vez en un bucle, así como otras cosas.¿Cuáles son algunas de las mejores prácticas de administración de memoria de Java?
Empecé a realizar una limpieza. Pero cuanto más pasaba, más preguntas tenía "¿Esto realmente hará algo?"
Por ejemplo, en lugar de declarar una variable fuera del ciclo mencionado anteriormente y simplemente establecer su valor en el ciclo ... crearon el objeto en el ciclo. Lo que quiero decir es:
for(int i=0; i < arrayOfStuff.size(); i++) {
String something = (String) arrayOfStuff.get(i);
...
}
frente
String something = null;
for(int i=0; i < arrayOfStuff.size(); i++) {
something = (String) arrayOfStuff.get(i);
}
Am I incorrecto decir que la curva inferior es mejor? Quizás estoy equivocado.
Además, ¿qué pasa después del segundo ciclo anterior, configuro "algo" de nuevo en nulo? ¿Eso borrará algo de memoria?
En cualquier caso, ¿cuáles son algunas de las mejores prácticas de administración de memoria que podría seguir que ayudarán a mantener mi uso de memoria bajo en mis aplicaciones?
Actualización:
aprecio gustos respuesta hasta ahora. Sin embargo, realmente no estaba preguntando acerca de los bucles anteriores (aunque según su consejo, volví al primer bucle). Estoy tratando de obtener algunas de las mejores prácticas que puedo vigilar. Algo en la línea de "cuando hayas terminado de usar una colección, despejala". Realmente necesito asegurarme de que estas aplicaciones no ocupen tanta memoria.
Re la edición: Como tres personas han dicho hasta ahora, perfílalo! –
Estoy buscando algunas prácticas específicas para usar, así que no es necesario que alguien lo haga. Prefiero desarrollarlo correctamente en primer lugar que codificar, espero que funcione, perfilarlo y hacer correcciones. – Ascalonian
La "práctica específica" es escribir código bien estructurado sin realizar una optimización prematura y luego perfilarlo para descubrir qué necesita optimizarse. –