SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
Sergio Martínez, 3 Octubre 2020
Identificando problemas en tu
aplicación
@SuperSerch
• Desarrollando en Java desde
2001
• Participe en el desarrollo de
los productos OpenSource
WebBuilder,
SemanticWebBuilder y
Cloudino (ESP8266)
• Desarrollador en Bitso
Problemas en una aplicación
Eligiendo el algoritmo correcto
Problemas en una aplicación
Eligiendo el algoritmo correcto
• La forma en que diseñamos la solución, ¿es la más conveniente?
Problemas en una aplicación
Eligiendo el algoritmo correcto
• La forma en que diseñamos la solución, ¿es la más conveniente?
• ¿Cuál es más rápido? Quick Sort o Buble Sort
Problemas en una aplicación
Eligiendo el algoritmo correcto
• La forma en que diseñamos la solución, ¿es la más conveniente?
• ¿Cuál es más rápido? Quick Sort o Buble Sort
• Depende
Problemas en una aplicación
Eligiendo el algoritmo correcto
• La forma en que diseñamos la solución, ¿es la más conveniente?
• ¿Cuál es más rápido? Quick Sort o Buble Sort
• Depende
• Quick Sort: O(n(log n)); Buble Sort: O(n^2)
Problemas en una aplicación
Eligiendo el algoritmo correcto
• La forma en que diseñamos la solución, ¿es la más conveniente?
• ¿Cuál es más rápido? Quick Sort o Buble Sort
• Depende
• Quick Sort: O(n(log n)); Buble Sort: O(n^2)
• Sólo 10 elementos
Problemas en una aplicación
Eligiendo el algoritmo correcto
• La forma en que diseñamos la solución, ¿es la más conveniente?
• ¿Cuál es más rápido? Quick Sort o Buble Sort
• Depende
• Quick Sort: O(n(log n)); Buble Sort: O(n^2)
• Sólo 10 elementos
• Tenemos un arreglo ordenado al que se le agregan elementos
Problemas en una aplicación
¿Qué elemento es el que limita a mi aplicación?
Problemas en una aplicación
¿Qué elemento es el que limita a mi aplicación?
• Poder de cómputo
Problemas en una aplicación
¿Qué elemento es el que limita a mi aplicación?
• Poder de cómputo
• Acceso a Memoria
Problemas en una aplicación
¿Qué elemento es el que limita a mi aplicación?
• Poder de cómputo
• Acceso a Memoria
• Cantidad de Memoria
Problemas en una aplicación
¿Qué elemento es el que limita a mi aplicación?
• Poder de cómputo
• Acceso a Memoria
• Cantidad de Memoria
• Acceso a Disco
Problemas en una aplicación
¿Qué elemento es el que limita a mi aplicación?
• Poder de cómputo
• Acceso a Memoria
• Cantidad de Memoria
• Acceso a Disco
• Acceso a Red
Herramientas
JConsole
The Java Monitoring and Management Console
• Parte del JDK desde la versión
5
• Interface gráfica que se
puede conectar a JVMs
locales o remotos
• Provee datos de Memoria,
Hilos, Clases y acceso a los
MBeans
Visual VM
https://visualvm.github.io
• Herramienta Externa, que se
puede conectar a JVMs
locales y remotos
• Maneja información de
Memoria, hilos, threadDump,
profiling de memoria
• Extensible vía Plugins
Java Misson Control
https://www.azul.com/products/zulu-mission-control/
• Se puede conectar a un JVM local
o remoto
• Maneja información de Memoria,
hilos, histogramas y ThreadDumps
• Puede analizar grabaciones de
Java Flight Recorder
• Puede colocar triggers para
mandar alertas, realizar volcados
de memoria o iniciar grabaciones
cuando se cumplen condiciones
adversas
Ejemplos
Memory leak
• Ocurre cuando no se eliminan
referencias fuertes a objetos
• Muy común al implementar
cache
• El live dataset se mantiene
creciendo
• Un System.gc() no puede
reducir el espacio de Old Gen
https://i1.wp.com/www.computition.net/wp-content/uploads/2018/01/
memory-leak-in-java.jpg
Demo
Memory leak
Deadlock
Dining philosophers
• Problema de sincronización
en concurrencia
• Ocurren cuando multiples
hilos bloquean acceso a
recursos en común
• El orden en el que se
adquieren los recursos es
clave
By Benjamin D. Esham / Wikimedia Commons, CC BY-SA
3.0, https://commons.wikimedia.org/w/index.php?
curid=56559
Demo
Deadlock
Creación de objetos
• Java tiene manejo “automático” de la memoria
• El costo de crear objetos
• El costo de envolver valores (Autoboxing)
• El costo de escoger la llave adecuada
• equals, hashcode, comparable
Demo
Object
Allocation
Ejemplo 1
• Creación de multiples objetos
de corta vida
• Mas de 4x tiempo
desperdiciado en crear
objetos
Ejemplo 2
• Diferencia entre long y Long
• Creación de objetos wrapper
para cada búsqueda
• El tiempo de creación de un
wrapper despreciable, pero
consume memoria
Ejemplo 3
• Usamos un objeto que
probablemente fue el mismo
al que se hace referencia en
la llave, no hay creación de
nuevos objetos
Eligiendo la llave adecuada para un Map
• HashMap tiene un número limitado de buckets
• Al tener una colisión en el hash para un bucket se inserta en el bucket
una lista, la cuál se tiene que recorrer cada vez que se buscan
elementos que caen en el mismo bucket
• En versiones recientes esta lista puede reemplazarse por un TreeSet
que convierte la búsqueda lineal en una búsqueda en un árbol
• Requiere que la llave no sólo tenga bien implementado equals y
hashcode, sino que sea Comparable
Contención por recursos
• Context switch
• I/O
Demo
Context
switch
Gracias

Más contenido relacionado

Similar a Identificando problemas en el JVM

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAlberto Gimeno
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Socialmetrix
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaglfloresgilberto
 
Allanando barreras en la comunicación, Dolores Garcia
Allanando barreras en la comunicación, Dolores GarciaAllanando barreras en la comunicación, Dolores Garcia
Allanando barreras en la comunicación, Dolores Garciamovimientodisenoinclusivo
 
Introducción a la Tecnología Orientada a Objetos
Introducción a la Tecnología Orientada a ObjetosIntroducción a la Tecnología Orientada a Objetos
Introducción a la Tecnología Orientada a Objetosedwinlemmon
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptxGabriela Soto
 
Aplicaciones escalables en Azure
Aplicaciones escalables en AzureAplicaciones escalables en Azure
Aplicaciones escalables en AzureGermán Küber
 
Meetup En mi local funciona - Mi primer diseño con Apache Kafka
Meetup En mi local funciona - Mi primer diseño con Apache KafkaMeetup En mi local funciona - Mi primer diseño con Apache Kafka
Meetup En mi local funciona - Mi primer diseño con Apache KafkaatSistemas
 
Presentacion DevSecOps Argentina
Presentacion DevSecOps ArgentinaPresentacion DevSecOps Argentina
Presentacion DevSecOps ArgentinaCSA Argentina
 
Defensa proyecto fin de carrera
Defensa proyecto fin de carreraDefensa proyecto fin de carrera
Defensa proyecto fin de carreraBorja Merino
 
Liferay themestraining lr6.2-es_v1.0
Liferay themestraining lr6.2-es_v1.0Liferay themestraining lr6.2-es_v1.0
Liferay themestraining lr6.2-es_v1.0Juan Gallardo Ortiz
 
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Socialmetrix
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsEsteban Saavedra
 

Similar a Identificando problemas en el JVM (20)

Cormo Framework
Cormo FrameworkCormo Framework
Cormo Framework
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Allanando barreras en la comunicación, Dolores Garcia
Allanando barreras en la comunicación, Dolores GarciaAllanando barreras en la comunicación, Dolores Garcia
Allanando barreras en la comunicación, Dolores Garcia
 
Allanando barreras en la comunicación
Allanando barreras en la comunicaciónAllanando barreras en la comunicación
Allanando barreras en la comunicación
 
Introducción a la Tecnología Orientada a Objetos
Introducción a la Tecnología Orientada a ObjetosIntroducción a la Tecnología Orientada a Objetos
Introducción a la Tecnología Orientada a Objetos
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
 
Aplicaciones escalables en Azure
Aplicaciones escalables en AzureAplicaciones escalables en Azure
Aplicaciones escalables en Azure
 
Meetup En mi local funciona - Mi primer diseño con Apache Kafka
Meetup En mi local funciona - Mi primer diseño con Apache KafkaMeetup En mi local funciona - Mi primer diseño con Apache Kafka
Meetup En mi local funciona - Mi primer diseño con Apache Kafka
 
Presentacion DevSecOps Argentina
Presentacion DevSecOps ArgentinaPresentacion DevSecOps Argentina
Presentacion DevSecOps Argentina
 
Defensa proyecto fin de carrera
Defensa proyecto fin de carreraDefensa proyecto fin de carrera
Defensa proyecto fin de carrera
 
Liferay themestraining lr6.2-es_v1.0
Liferay themestraining lr6.2-es_v1.0Liferay themestraining lr6.2-es_v1.0
Liferay themestraining lr6.2-es_v1.0
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Code Igniter
Code IgniterCode Igniter
Code Igniter
 
webminar ataques de fuerza bruta kali linux
webminar ataques de fuerza bruta kali linux webminar ataques de fuerza bruta kali linux
webminar ataques de fuerza bruta kali linux
 
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
 
Go
GoGo
Go
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
PresentacióN Tesis
PresentacióN TesisPresentacióN Tesis
PresentacióN Tesis
 

Más de superserch

Introducción al manejo de memoria en el JVM
Introducción al manejo de memoria en el JVMIntroducción al manejo de memoria en el JVM
Introducción al manejo de memoria en el JVMsuperserch
 
Lambda & Stream API workshop 2019
Lambda & Stream API workshop 2019Lambda & Stream API workshop 2019
Lambda & Stream API workshop 2019superserch
 
OWASP Top 10 2017
OWASP Top 10 2017OWASP Top 10 2017
OWASP Top 10 2017superserch
 
Garbage Collection en el JVM
Garbage Collection en el JVMGarbage Collection en el JVM
Garbage Collection en el JVMsuperserch
 
Jvmmx docker jvm
Jvmmx docker jvmJvmmx docker jvm
Jvmmx docker jvmsuperserch
 
Cloudino workshopcpmx7
Cloudino workshopcpmx7Cloudino workshopcpmx7
Cloudino workshopcpmx7superserch
 
Workshop: Lambdas y Stream API en Java 8
Workshop: Lambdas y Stream API en Java 8Workshop: Lambdas y Stream API en Java 8
Workshop: Lambdas y Stream API en Java 8superserch
 
Chela stress test
Chela stress testChela stress test
Chela stress testsuperserch
 
Zed Attack Proxy
Zed Attack ProxyZed Attack Proxy
Zed Attack Proxysuperserch
 
Inyección, XSS, CSRF en ChelaJS
Inyección, XSS, CSRF en ChelaJSInyección, XSS, CSRF en ChelaJS
Inyección, XSS, CSRF en ChelaJSsuperserch
 

Más de superserch (11)

Introducción al manejo de memoria en el JVM
Introducción al manejo de memoria en el JVMIntroducción al manejo de memoria en el JVM
Introducción al manejo de memoria en el JVM
 
Lambda & Stream API workshop 2019
Lambda & Stream API workshop 2019Lambda & Stream API workshop 2019
Lambda & Stream API workshop 2019
 
OWASP Top 10 2017
OWASP Top 10 2017OWASP Top 10 2017
OWASP Top 10 2017
 
Garbage Collection en el JVM
Garbage Collection en el JVMGarbage Collection en el JVM
Garbage Collection en el JVM
 
Jvmmx docker jvm
Jvmmx docker jvmJvmmx docker jvm
Jvmmx docker jvm
 
Cloudino workshopcpmx7
Cloudino workshopcpmx7Cloudino workshopcpmx7
Cloudino workshopcpmx7
 
Workshop: Lambdas y Stream API en Java 8
Workshop: Lambdas y Stream API en Java 8Workshop: Lambdas y Stream API en Java 8
Workshop: Lambdas y Stream API en Java 8
 
Jvmmx jigsaw
Jvmmx jigsawJvmmx jigsaw
Jvmmx jigsaw
 
Chela stress test
Chela stress testChela stress test
Chela stress test
 
Zed Attack Proxy
Zed Attack ProxyZed Attack Proxy
Zed Attack Proxy
 
Inyección, XSS, CSRF en ChelaJS
Inyección, XSS, CSRF en ChelaJSInyección, XSS, CSRF en ChelaJS
Inyección, XSS, CSRF en ChelaJS
 

Último

El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 

Último (20)

El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 

Identificando problemas en el JVM

  • 1. Sergio Martínez, 3 Octubre 2020 Identificando problemas en tu aplicación
  • 2. @SuperSerch • Desarrollando en Java desde 2001 • Participe en el desarrollo de los productos OpenSource WebBuilder, SemanticWebBuilder y Cloudino (ESP8266) • Desarrollador en Bitso
  • 3. Problemas en una aplicación Eligiendo el algoritmo correcto
  • 4. Problemas en una aplicación Eligiendo el algoritmo correcto • La forma en que diseñamos la solución, ¿es la más conveniente?
  • 5. Problemas en una aplicación Eligiendo el algoritmo correcto • La forma en que diseñamos la solución, ¿es la más conveniente? • ¿Cuál es más rápido? Quick Sort o Buble Sort
  • 6. Problemas en una aplicación Eligiendo el algoritmo correcto • La forma en que diseñamos la solución, ¿es la más conveniente? • ¿Cuál es más rápido? Quick Sort o Buble Sort • Depende
  • 7. Problemas en una aplicación Eligiendo el algoritmo correcto • La forma en que diseñamos la solución, ¿es la más conveniente? • ¿Cuál es más rápido? Quick Sort o Buble Sort • Depende • Quick Sort: O(n(log n)); Buble Sort: O(n^2)
  • 8. Problemas en una aplicación Eligiendo el algoritmo correcto • La forma en que diseñamos la solución, ¿es la más conveniente? • ¿Cuál es más rápido? Quick Sort o Buble Sort • Depende • Quick Sort: O(n(log n)); Buble Sort: O(n^2) • Sólo 10 elementos
  • 9. Problemas en una aplicación Eligiendo el algoritmo correcto • La forma en que diseñamos la solución, ¿es la más conveniente? • ¿Cuál es más rápido? Quick Sort o Buble Sort • Depende • Quick Sort: O(n(log n)); Buble Sort: O(n^2) • Sólo 10 elementos • Tenemos un arreglo ordenado al que se le agregan elementos
  • 10. Problemas en una aplicación ¿Qué elemento es el que limita a mi aplicación?
  • 11. Problemas en una aplicación ¿Qué elemento es el que limita a mi aplicación? • Poder de cómputo
  • 12. Problemas en una aplicación ¿Qué elemento es el que limita a mi aplicación? • Poder de cómputo • Acceso a Memoria
  • 13. Problemas en una aplicación ¿Qué elemento es el que limita a mi aplicación? • Poder de cómputo • Acceso a Memoria • Cantidad de Memoria
  • 14. Problemas en una aplicación ¿Qué elemento es el que limita a mi aplicación? • Poder de cómputo • Acceso a Memoria • Cantidad de Memoria • Acceso a Disco
  • 15. Problemas en una aplicación ¿Qué elemento es el que limita a mi aplicación? • Poder de cómputo • Acceso a Memoria • Cantidad de Memoria • Acceso a Disco • Acceso a Red
  • 17. JConsole The Java Monitoring and Management Console • Parte del JDK desde la versión 5 • Interface gráfica que se puede conectar a JVMs locales o remotos • Provee datos de Memoria, Hilos, Clases y acceso a los MBeans
  • 18. Visual VM https://visualvm.github.io • Herramienta Externa, que se puede conectar a JVMs locales y remotos • Maneja información de Memoria, hilos, threadDump, profiling de memoria • Extensible vía Plugins
  • 19. Java Misson Control https://www.azul.com/products/zulu-mission-control/ • Se puede conectar a un JVM local o remoto • Maneja información de Memoria, hilos, histogramas y ThreadDumps • Puede analizar grabaciones de Java Flight Recorder • Puede colocar triggers para mandar alertas, realizar volcados de memoria o iniciar grabaciones cuando se cumplen condiciones adversas
  • 21. Memory leak • Ocurre cuando no se eliminan referencias fuertes a objetos • Muy común al implementar cache • El live dataset se mantiene creciendo • Un System.gc() no puede reducir el espacio de Old Gen https://i1.wp.com/www.computition.net/wp-content/uploads/2018/01/ memory-leak-in-java.jpg
  • 22.
  • 23.
  • 25. Deadlock Dining philosophers • Problema de sincronización en concurrencia • Ocurren cuando multiples hilos bloquean acceso a recursos en común • El orden en el que se adquieren los recursos es clave By Benjamin D. Esham / Wikimedia Commons, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php? curid=56559
  • 27. Creación de objetos • Java tiene manejo “automático” de la memoria • El costo de crear objetos • El costo de envolver valores (Autoboxing) • El costo de escoger la llave adecuada • equals, hashcode, comparable
  • 29. Ejemplo 1 • Creación de multiples objetos de corta vida • Mas de 4x tiempo desperdiciado en crear objetos
  • 30. Ejemplo 2 • Diferencia entre long y Long • Creación de objetos wrapper para cada búsqueda • El tiempo de creación de un wrapper despreciable, pero consume memoria
  • 31. Ejemplo 3 • Usamos un objeto que probablemente fue el mismo al que se hace referencia en la llave, no hay creación de nuevos objetos
  • 32. Eligiendo la llave adecuada para un Map • HashMap tiene un número limitado de buckets • Al tener una colisión en el hash para un bucket se inserta en el bucket una lista, la cuál se tiene que recorrer cada vez que se buscan elementos que caen en el mismo bucket • En versiones recientes esta lista puede reemplazarse por un TreeSet que convierte la búsqueda lineal en una búsqueda en un árbol • Requiere que la llave no sólo tenga bien implementado equals y hashcode, sino que sea Comparable
  • 33. Contención por recursos • Context switch • I/O