Como he tenido que empaparme de su funcionamiento, aprovecho y pongo un post sobre conceptos básicos de la memoria en Java.
Para empezar, Java divide la memoria en dos segmentos bien diferenciados:
- Heap: Objetos del usuario, variables, …
- Non-Heap/Perm: Código, metadatos, …
La que más nos interesa es la Heap, porque es la que podemos “controlar”. A la memoria Non-Heap (Perm) se le puede configurar el tamaño con el comando MaxPermSize. Pero esto sólo es útil si la aplicación va a cargar o generar dinámicamente muchas clases diferentes.
La memoria heap se divide a su vez en dos generaciones según su tiempo de vida:
- Young Generation
- Old Generation
Normalmente la generación joven está compuesta de variables locales y objetos temporales, mientras que la generación vieja suele componerse de estructuras que son necesarias durante toda la ejecución: configuraciones, ventanas gráficas,…
Click here to read more.. »