Want to create interactive content? It’s easy in Genially!

Get started free

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:

Psychedelic Presentation

Modern Presentation

Relaxing Presentation

Chalkboard Presentation

Visual Presentation

Terrazzo Presentation

Halloween Presentation

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