Uploaded by ALEX ALBERTO DAVID USUGA

PR-01-Procedimiento de optimización de RAM con GC Java V01

advertisement
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.
Download