Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Administracindememoriaenjava 130714214058 Phpapp01 PDF
Administracindememoriaenjava 130714214058 Phpapp01 PDF
http://javacuriosities.blogspot.com.ar/
Temario
¿Qué es la memoria?
¿Quién esta a cargo del manejo de la memoria en Java?
Áreas de memoria (Runtime Data Areas)
- Stack
- Heap Área
- Non-Heap Área
¿Qué pasa cuando ejecutamos nuestro programa Java?
Ciclo de vida de los objetos
Size of tipos primitivos vs Wrappers
Size of Objetos
Modelo de memoria de la JVM y sus parámetros
Garbage Collector
¿Que es un OOM (Out Of Memory)?
¿Qué tipos de OOM podemos encontrar?
Figura 1: Figura 2:
Objeto 1: Retained size obj1, obj2, obj4 Objeto 1: Retained size obj1, obj2, obj3, obj4
Objeto 2: Retained size obj2, obj4 Objeto 2: Retained size obj2, obj3, obj4
-Xss
-XX:ThreadStackSize Tamaño de cada stack de cada Thread -XX:ThreadStackSize=256k
-XX:TargetSurvivorRatio Indica hasta que porcentaje se puede llenar el Survivor antes de mover al Old -XX:TargetSurvivorRatio=90
Línea #11
System.runFinalization(): Le sugiere a la
JVM a ejecutar el método finalize de los
objetos que están en la cola de finalización.
System.gc(): Le sugiere a la JVM ejecutar el
garbage collector para reclamar espacio y
liberar memoria.
N° Fase Descripcion
Initial Mark
1 Es una pausa pequeña donde todos los objetos "reachable" son marcados.
(Stop the World Event)
2 Concurrent Marking Busca objetos vivos mientras la aplicación se ejecuta en otro hilos.
Remark
3 Busca los objetos que no fueron encontrados durante la parte 2.
(Stop the World Event)
Remueve los objetos que son "unreachable", es importante notar que los objetos
4 Concurrent Sweep
"reachable" no son movidos, o sea no hay compactacion.
Tenured Generation:
"Serial Old" corre en un solo hilo y es del tipo STW, usa el algoritmo
Mark-Sweep-Compact.
"Parallel Old" corre en múltiples hilos, también es del tipo STW.
"CMS" corre de forma concurrente la mayor parte del tiempo y tiene
pequeñas pausas donde se ejecuta en forma STW.
-XX:-UseParNewGC
-XX:+UseConcMarkSweepGC Serial CMS + Serial Old (MSC)
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC ParNew CMS + Serial Old (MSC)
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC G1
Parámetro Definicion
Guarda la misma información que -verbose:gc en un archivo que le indiquemos pero además
-Xloggc:GCLogs.log agrega mas detalle
HeapDumpOnOutOfMemoryError
Cuando la aplicación arroje un OOM se generara un heap dump, usando el HeapDumpPath
configurado.
Jmap
Tool que viene incorporada en el jdk.
jmap -dump:file=<file-location> <pid>
HotSpotDiagnosticMXBean(Usando Reflection)
Usando el DiagnosticMXBean para hacer el dump
Jmap
- Nos ofrece información de las áreas de memoria del proceso Java indicado y además nos
permite generar Heap Dumps y Histogramas.
Jhat
- Herramienta de análisis del Heap, es experimental y puede no estar incluida en futuras
versiones.
Jstat
- Nos brinda información estadística sobre el proceso Java que le indicamos, esta
estadísticas incluyen tiempo del GC, JIT Compiler, Classloaders.
Jstack
- Ejecuta un Thread Dump o sea un volcado de cada Thread.
Jinfo
- Brinda información de configuración de un proceso Java.
Administración de memoria en Java
Links
VisualVM
http://visualvm.java.net/
GCViewer
https://github.com/chewiebug/GCViewer/wiki/Changelog
Jprofiler
http://www.ej-technologies.com/products/jprofiler/overview.html