Parámetros de JVM de uso frecuente

Una JVM o Java Virtual Machine es una implementación de software de una máquina física, o podemos decir que es una máquina abstracta. Java fue diseñado con el concepto de WORA (Write Once Run Anywhere), que se ejecuta en una máquina virtual. Es una especificación que brinda un entorno de tiempo de ejecución durante el cual a menudo se ejecuta el código de bytes de Java. El compilador compila el archivo Java en un archivo .class de Java, luego ese archivo .class se ingresa en la JVM, que carga y ejecuta el archivo de clase.

JVM está construido con tres subunidades básicas

  1. Subsistema ClassLoader
  2. Área de datos de tiempo de ejecución
  3. Motor de ejecución

Ahora analicemos los parámetros JVM más utilizados, que son 3, a saber, los siguientes:

  1. Tamaño de almacenamiento dinámico de Java
  2. Recolector de basura
  3. Imprimir GC

Parámetro 1: Tamaño del almacenamiento dinámico de Java

Las siguientes tres opciones de JVM especifican el tamaño de almacenamiento dinámico inicial y máximo y el tamaño de pila de subprocesos mientras se ejecutan programas Java: 

 -Xms - set initial Java heap size
 -Xmx - set maximum Java heap size
 -Xss - set java thread stack size

Parámetro 2: Recolector de basura

Los algoritmos de recolección de basura se utilizan para lograr una mejor estabilidad de la aplicación. Garbage Collection rastrea todos y cada uno de los objetos disponibles dentro del espacio de almacenamiento dinámico de JVM y elimina los que no se usan.

Java nos proporciona 4 formas de implementar la recolección de basura, a saber, a continuación:

  1. -XX:+UsarSerialGC
  2. -XX:+UsarParallelGC
  3. -XX:+USeParNuevoGC
  4. -XX:+UsarG1GC

Ejemplo:

Java

// Class
// To test garbage collection
public class GFG { 
 
  // Method 1 - finalize()
  // finalize() method is invoked each time
  // before the "Test example garbage collection"
  public void finalize(){System.out.println("Test example garbage collection");} 
  
  // Method 2
  // Main driver method
  public static void main(String args[]){
   
  // Creating anonymous objects of
  // GFG class in amin() method 
  GFG object1 = new GFG(); 
  GFG object2 = new GFG();
    
  // Assigning objects NULL references
  object1 = null; 
  object2 = null;
   
  // CAlling(invoking) garbage collection
  // using gc() method
  System.gc(); 
 } 
}

Producción:

 Test example garbage collection
 Test example garbage collection

Parámetro 3: Imprimir GC

Estas opciones de JVM permiten el registro de recolección de basura, que es muy efectivo para la operación sensible a la latencia.

Usando los siguientes parámetros, podemos registrar la actividad del GC:

-XX:+UseGCLogFileRotation 
-XX:NumberOfGCLogFiles=< number of log files > 
-XX:GCLogFileSize=< file size >[ unit ]
-Xloggc:/path/to/gc.log

Ejemplo:

Java

// Java Program to illustrate Print GC
public class Application {
 
    private static Map<String, String> stringContainer = new HashMap<>();
 
    public static void main(String[] args) {
        System.out.println("Start!");
        String stringWithPrefix = "Prefix";
 
        // Load Java Heap with 3 M java.lang.String instances
        for (int i = 0; i < 3000000; i++) {
            String newString = stringWithPrefix + i;
            stringContainer.put(newString, newString);
        }
        System.out.println("MAP size: " + stringContainer.size());
 
        // Explicit GC!
        System.gc();
 
        // Remove 2 M out of 3 M
        for (int i = 0; i < 2000000; i++) {
            String newString = stringWithPrefix + i;
            stringContainer.remove(newString);
        }
 
        System.out.println("MAP size: " + stringContainer.size());
        System.out.println("End");
    }
}

Publicación traducida automáticamente

Artículo escrito por mayanktyagi1709 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *