Preparate para la presentación
Carlos Castillo
MSC, Senior software engineer en Luxoft
Detectando java memory leaks
por Carlos Castillo
¿Qué es un memory leak?
Memory leak es la reservación mantenida de un espacio de memoria de un dato que no se necesita más
¿Puede ocurrir en Java?
SI
¿No se supone que para
eso crearon el garbage collector
y el desarrollador no
debería preocuparse más por eso
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore.
No exactamente
¿Cómo ocurre?
Síntomas
Conforme crece el tiempo la cantidad de memory heap ocupada crece
Síntomas
La frecuencia del GC incrementa conforme el uso de memoria crece
Síntomas
La JVM muere con el temido OutOfMemoryError
Algunas suposiciones erróneas
Permitir al GC correr en repetidas ocaciones resuelve el problema
Algunas suposiciones erróneas
El fallo en la liberación de memoria es culpa del GC
Recuerden chicos
"La vida es dura..."
Issac Newton (1991)
¿Cómo se ve un memory leak?
Veamos los siguientes ejemplos
¿Cómo se ve un memory leak?
Veamos los siguientes ejemplos
¿Cómo se ve un memory leak?
Veamos los siguientes ejemplos
¿Cómo se ve un memory leak?
Veamos los siguientes ejemplos
DEMO - encontrando la fuga
un pequeño vistazo a visualVM y java mission control
Sugerencias para evitar memory leaks
+ Terminar sesiones cuando no se necesiten más
+ Mantener el time-out al mínimo
+ Evitar caches innecesarios
Más vale prevenimss
+ append antes que concat
Sugerencias para evitar memory leaks
+ PreparedStatement para queries frecuentes
+ Si haces queries dentro de un loop cierralas dentro de el mismo loop
+ Usa el bloque finally para cerrar Statements, Connection, ResultSet, etc.
+ java -XX:+HeapDumpOnOutOfMemoryError
Más vale prevenimss
¡MUCHAS GRACIAS!
Nos vemos la próxima
java memory leaks j4guanatos
Carlos Iván Castillo Sepúlveda
Created on February 25, 2021
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Psychedelic Presentation
View
Modern Presentation
View
Relaxing Presentation
View
Chalkboard Presentation
View
Visual Presentation
View
Terrazzo Presentation
View
Halloween Presentation
Explore all templates
Transcript
Preparate para la presentación
Carlos Castillo
MSC, Senior software engineer en Luxoft
Detectando java memory leaks
por Carlos Castillo
¿Qué es un memory leak?
Memory leak es la reservación mantenida de un espacio de memoria de un dato que no se necesita más
¿Puede ocurrir en Java?
SI
¿No se supone que para
eso crearon el garbage collector
y el desarrollador no
debería preocuparse más por eso
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore.
No exactamente
¿Cómo ocurre?
Síntomas
Conforme crece el tiempo la cantidad de memory heap ocupada crece
Síntomas
La frecuencia del GC incrementa conforme el uso de memoria crece
Síntomas
La JVM muere con el temido OutOfMemoryError
Algunas suposiciones erróneas
Permitir al GC correr en repetidas ocaciones resuelve el problema
Algunas suposiciones erróneas
El fallo en la liberación de memoria es culpa del GC
Recuerden chicos
"La vida es dura..."
Issac Newton (1991)
¿Cómo se ve un memory leak?
Veamos los siguientes ejemplos
¿Cómo se ve un memory leak?
Veamos los siguientes ejemplos
¿Cómo se ve un memory leak?
Veamos los siguientes ejemplos
¿Cómo se ve un memory leak?
Veamos los siguientes ejemplos
DEMO - encontrando la fuga
un pequeño vistazo a visualVM y java mission control
Sugerencias para evitar memory leaks
+ Terminar sesiones cuando no se necesiten más
+ Mantener el time-out al mínimo
+ Evitar caches innecesarios
Más vale prevenimss
+ append antes que concat
Sugerencias para evitar memory leaks
+ PreparedStatement para queries frecuentes
+ Si haces queries dentro de un loop cierralas dentro de el mismo loop
+ Usa el bloque finally para cerrar Statements, Connection, ResultSet, etc.
+ java -XX:+HeapDumpOnOutOfMemoryError
Más vale prevenimss
¡MUCHAS GRACIAS!
Nos vemos la próxima