...................................................................................................................................i Resumen................................................................................................................................. ii Resum.................................................................................................................................... iii 1. Introducción........................................................................................................................1 1.1. Ámbito del proyecto...................................................................................................1 1.2. Motivación......................................................................................................... .........1 1.3. Objetivos generales.................................................................................................... 2 1.4. Objetivos específicos......................................................................................... .........2 1.5. Organización de la memoria.............................................................................. .........2 2. Tecnologías utilizadas........................................................................................................3 2.1. Java Virtual Machine................................................................................................ 3 2.2. Heap................................................................................................................... ........4 2.3. JavaBytecode..................................................................................................... ........6 2.4. Garbage Collector..................................................................................................... 8 2.4.1. Funcionamiento Garbage Collector............................................................ ......9 2.4.2. Objetos candidatos para el GC..........................................................................9 2.4.3. El método Write Barrier................................................................................... 9 2.4.4. Orden de procesamiento de cada zona...................................................... .....10 2.4.5. Algoritmo de recolección de YG (Minor GC)............................................... .11 2.4.6. Old Generation......................................................................................... .......13 2.4.7. Major GC....................................................................................................... 13 2.4.8. Stop the World Event............................................................................... ......13 2.4.9. Full GC..................................................................................................... ... ..14 2.4.10. Permanent Generation........................................................................... .. ....15 2.4.11. Contenido Permanent Generation.......................................................... .. ....15 3. Metodología y herramientas........................................................................................ 16 3.1. HPROF Tool.................................................................................................... .....16 3.2. Comandos HPROF.............................................................................................. 16 3.2.1. Heap Dump........................................................................................... ......19 3.2.2. CPU Usage Sampling Profiles................................................................. ...19 3.2.3. CPU Usage Times Profiles........................................................................ 20 3.3. Herramientas Jstat............................................................................................ ...20 3.3.1. StatOption................................................................................................. 21 3.3.1.1. Option GC........................................................................................ 22 3.3.1.2. Option gcnew................................................................................... 23 3.3.1.3. Option gcold..................................................................................... 23 3.3.1.4. Option gcutil..................................................................................... 24 3.4. Heap Histogram, herramientas de Jmap............................................................ 24 3.4.1. Heap Histogram, herramienta de Jmap.................................................... 26 3.4.2. Permanent Generation Statistics, herramientas jmap.............................. 26 3.5. VisualVM.......................................................................................................... 27 3.5.1. Procedimiento de instalación y utilización de VisualVM....................... 27 3.5.2. IntellIJ..................................................................................................... 27 3.5.3. Interfaz Monitor de VisualVM............................................................... 29 3.5.4. Interfaz Sampler Thread CPU Time de VisualVM................................. 32 3.5.5. Interfaz CPU Samples de VisualVM...................................................... 32 3.5.6. Interfaz Per Thread Allocations.............................................................. 32 4. Aplicaciones desarrolladas para el estduio del GC.................................................... 33 4.1. BFS.................................................................................................................. .33 4.2. DFS...................................................................................................................33 4.3. Dijkstra............................................................................................................. 34 5. Análisis de datos.........................................................................................................35 5.1. BFS................................................................................................................... 36 5.1.1. Histogramas BFS..................................................................................... 36 5.1.1.1. Histograma 64................................................................................ 36 5.1.1.2. Histograma Live............................................................................. 36 5.1.2. Diferencia ES respecto a OG.................................................................. 37 5.1.3. Observaciones BFS con VisualVM........................................................ 38 5.1.4. Eden Space............................................................................................. 38 5.1.5. Survivor 0............................................................................................... 39 5.1.6. Survivor 1............................................................................................... 40 5.1.7. Old Generation....................................................................................... 41 5.1.8. S1 y DSS................................................................................................ 42 5.1.9. S1 y S0U................................................................................................ 42 5.1.10. TT y S0.................................................................................................. 43 5.1.11. Permanent Generation........................................................................... 44 5.1.12. Tiempos del GC.................................................................................... 44 5.2. DFS.................................................................................................................. 45 5.2.1. Observaciones DFS con VisualVM....................................................... 45 5.2.2. Histogramas DFS................................................................................... 45 5.2.2.1. Histograma Live........................................................................... 46 5.2.2.2. Histograma D64........................................................................... 46 5.2.3. Survivor 0 & 1........................................................................................ 46 5.2.4. Eden Space............................................................................................. 47 5.2.5. Old Generation........................................................................................48 5.2.6. S0U, DSS y S1U.................................................................................... 48 5.2.7. TT y DSS............................................................................................... 49 5.2.8. Tiempos del GC..................................................................................... 51 5.3. Conclusiones DFS frente a BFS...................................................................... 51 5.4. Dijkstra............................................................................................................ 52 5.4.1. VisualVM............................................................................................... 52 5.4.2. Histogramas Dijkstra.............................................................................. 52 5.4.2.1. Histograma Live........................................................................... 53 5.4.2.2. Histograma D64........................................................................... 53 5.4.3. Survivor 0 & 1....................................................................................... 53 5.4.4. Eden Space............................................................................................ 53 5.4.5. Old Generation...................................................................................... 54 5.4.6. TT y DSS...............................