stringtranslate.com

Recolector de basura primero

El recolector de basura primero ( G1 ) es un algoritmo de recolección de basura introducido en la máquina virtual Java (JVM) Oracle HotSpot 6 y compatible desde la actualización 4 de la versión 7. Se planeó para reemplazar al recolector de barrido de marcas concurrente (CMS) en la JVM 7 y se convirtió en predeterminado en Java 9. [1]

Recolector de basura

El recolector de basura primero (G1) es un recolector de basura de estilo servidor , destinado a multiprocesadores con memorias grandes , que cumple un objetivo de tiempo real suave con alta probabilidad, al mismo tiempo que logra un alto rendimiento . [2] G1 recopila preferentemente regiones con la menor cantidad de datos en vivo, o "primero la basura". [3] G1 es el reemplazo a largo plazo de CMS. Las operaciones de montón completo, como el marcado global, se realizan simultáneamente con los subprocesos de la aplicación , para evitar interrupciones proporcionales al tamaño del montón o de los datos en vivo. El marcado simultáneo proporciona integridad de la recopilación e identifica regiones listas para la recuperación a través de la evacuación de compactación. Esta evacuación se realiza en paralelo en multiprocesadores, para disminuir los tiempos de pausa y aumentar el rendimiento.

G1 se introdujo por primera vez como una opción experimental en Java SE 6 Update 14, [4] donde se puede habilitar con los siguientes dos parámetros de línea de comandos: -XX:+UnlockExperimentalVMOptionsy -XX:+UseG1GCCon JDK 7, se planeó que G1 reemplazara a CMS en la JVM Hotspot. Hay dos diferencias principales entre CMS y G1. La primera es que G1 es un recolector compactador . [5] G1 compacta lo suficiente como para evitar por completo el uso de listas libres de grano fino para la asignación, lo que simplifica considerablemente partes del recolector y elimina en su mayoría los posibles problemas de fragmentación . Además de compactar, G1 ofrece pausas de recolección de basura más predecibles que el recolector CMS y permite a los usuarios establecer sus objetivos de pausa deseados.

En Java 9, G1 se convirtió en el recolector de basura predeterminado, [6] [1] a pesar de que Google propuso en contra el conocido CMS como estándar, afirmando que el CMS modificado que utiliza funciona mejor que G1. [7] Desde entonces, Oracle ha mejorado enormemente el rendimiento, la latencia y el consumo de memoria de G1 . [8]

Productos relacionados

Para garantizar un comportamiento en tiempo real incluso con recolección de basura, se necesita un recolector de basura en tiempo real como los que vienen con Java RTS de Sun [9] o WebSphere RT de IBM . [10]

Véase también

Referencias

  1. ^ ab "JEP 248: Convertir G1 en el recolector de basura predeterminado". openjdk.java.net . Consultado el 9 de diciembre de 2019 .
  2. ^ Detlefs, David; Flood, Christine; Heller, Steve; Printezis, Tony (2004). "Recolección de basura, primero basura". Actas del 4º simposio internacional sobre gestión de la memoria . pp. 37–48. CiteSeerX 10.1.1.63.6386 . doi :10.1145/1029873.1029879. ISBN .  1581139454. Número de identificación del sujeto  3330886.
  3. ^ "Parte 1: Introducción al recolector de basura G1". www.redhat.com .
  4. ^ "G1: El primer recolector de basura de Java". Dr. Dobbs .
  5. ^ "El primer recolector de basura". www.fasterj.com .
  6. ^ "¿Por qué G1 es el recolector de basura predeterminado para Java 9?"
  7. ^ "El nuevo recolector de basura de Java 9: ​​¿Qué está cambiando? ¿Qué se mantiene? - JAXenter". jaxenter.com. 26 de junio de 2015.
  8. ^ Johansson, Stefan (11 de octubre de 2021). "G1: hasta el infinito y más allá". inside.java .
  9. ^ http://www.oracle.com/technetwork/articles/javase/index-138577.html Introducción a la tecnología Java en tiempo real: Parte 2, Recolección de basura y el sistema Sun Java Real-Time System (Java RTS)
  10. ^ http://www.ibm.com/developerworks/java/library/j-rtj4/index.html?S_TACT=105AGX02&S_CMP=EDU Recolección de basura en tiempo real

Enlaces externos