1. DEFINICIONES Definición de los términos que se utilizan durante el procedimiento y que requieren de una explicación más detallada de su concepto. GC: El recolector de elementos no utilizados (GC) administra automáticamente las solicitudes de asignación de memoria dinámica de la aplicación. Un recolector de elementos no utilizados realiza una gestión de memoria dinámica automática a través de las siguientes operaciones: • Asigna y devuelve memoria al sistema operativo. • Entrega esa memoria a la aplicación a medida que la solicita. • Determina qué partes de esa memoria todavía están en uso por la aplicación. • Recupera la memoria no utilizada para que la aplicación la reutilice. Summary/Overview : Muestra cuatro gráficas; Uso de la memoria, los hilos del proceso, las clases cargadas y el uso de la CPU Memory : Información detallada sobre el uso de la memoria. Igualmente aporta gráficas y “combos” para seleccionar un tipo de memoria concreta Threads : Información detallada e individual del uso de hilos. Igualmente muestra su propia gráfica Classes : Informa sobre el número de clases cargadas y descargadas. VM Summary : Muestra información sobre la máquina virtual; como el uso de hilos, memoria consumida y algunos parámetros del OS MBeas : Aquí se presenta una serie de directorios en árbol que contiene los métodos y clases que permiten controlar el proceso java. Ya vimos en la primera entrada que esto corresponde a la cala de instrumentación. De todas las pestañas nos vamos a centrar tan solo en tres de ellas y especialmente en la pestaña “Memory“. 2. DESCRIPCIÓN DE ACTIVIDADES A. Modificar parámetro de la configuración de java: [JAVA] vm=C:\Program Files\Java\jre1.8.0_162\bin\java.exe vmargs=-Xms2048m -Xmx12288m -Dlog4j2.formatMsgNoLookups=true XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC vmargs.mgendoc=-Xmx756M native-vmargs=-Xmx128m -Dlog4j2.formatMsgNoLookups=true XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC El parámetro que está en rojo es el que pertenece al Garbage collector, este se agrega a la línea. Este tipo de GC es: “G1 is a generational, incremental, parallel, mostly concurrent, stop-the-world, and evacuating garbage collector which monitors pause-time goals in each of the stop-the-world pauses. Similar to other collectors, G1 splits the heap into (virtual) young and old generations. Space-reclamation efforts concentrate on the young generation where it is most efficient to do so, with occasional space-reclamation in the old generation Some operations are always performed in stop-the-world pauses to improve throughput. Other operations that would take more time with the application stopped such as whole-heap operations like global marking are performed in parallel and concurrently with the application. To keep stop-the-world pauses short for space-reclamation, G1 performs space-reclamation incrementally in steps and in parallel. G1 achieves predictability by tracking information about previous application behavior and garbage collection pauses to build a model of the associated costs. It uses this information to size the work done in the pauses. For example, G1 reclaims space in the most efficient areas first (that is the areas that are mostly filled with garbage, therefore the name).” Imagen 1. Parametro de GC. B. Despues de configurar el parametro se debe reiniciar el servicio MOCA y RF, en este caso para Windows. Imagen 2. Servicios de Windows. C. En este paso ya está todo configurado para realizar el proceso de barrido a través de jconsole.exe que está en la siguiente ruta: C:\Program Files\Java\jdk1.8.0_162\bin. Copiamos la ruta y luego ejecutamos CMD como administrador. Imagen 3. Copiar e ir a la ruta, para esto se antecede CD. D. Para ejecutar y administrar un proceso de java se debe obtener el PID o process ID. Para esto vamos al administrador de tareas para visualizarlo o si no está habilitado por favor seguir lo de la imagen. Imagen 4. Habilitar PID y línea de comando E. Después tener visual del PID que corresponde al de la aplicación, digitarlo en la consola de CMD, jconsole.exe 16784, el numero corresponde al PID del proceso. Imagen 5. PID correspondiente al proceso para monitorear y controlar. Imagen 6. Digitar jconsole.exe y el PID. Después de haber agregado la línea damos enter y este nos llevará a la consola, antes de ingresar nos mostrará un pantallazo del tipo de conexión si es segura y si nos queremos conectar, a lo que damos clic a (Insecure connection). Imagen 7. Conexión al PID a través de jconsole. F. Estando en la consola nos vamos a la pestaña que dice memory. Imagen 8. Acceder a la pestaña de memory. Podemos ver el uso de memoria del proceso. Imagen 9. Consumo de memoria del PID, en el momento está consumiendo 11 GB de RAM. Damos clic al botón de Perform GC, este ejecutará el proceso e iniciará a eliminar hilos del proceso que no esté utilizando y los que si los llevará a otra partición y otros los remarcará para dejarlos activos. Imagen 9. Después de haber dado clic a perform GC. Nota: Después de haber dado clic a perform GC la memoria iniciará a depurarse, esto no significa que la memoria quede totalmente optimizada, solo matará procesos o hilos que ya no están usándose en este proceso, si esto no funciona significa que la memoria como recurso está corta para todo el nivel operativo por la cantidad de RF o pantallas en simultaneo.