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
- Subsistema ClassLoader
- Área de datos de tiempo de ejecución
- Motor de ejecución
Ahora analicemos los parámetros JVM más utilizados, que son 3, a saber, los siguientes:
- Tamaño de almacenamiento dinámico de Java
- Recolector de basura
- 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:
- -XX:+UsarSerialGC
- -XX:+UsarParallelGC
- -XX:+USeParNuevoGC
- -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