logo java java-ee memory memory-management

java - logo - hbase



Java GC Concept: CMSInitiatingOccupancyFraction (1)

Ninguno. Será elegible para ejecutarse después de que la ocupación de la generación anterior alcance el 50%, donde el tamaño de la generación anterior es el tamaño del montón menos el tamaño de la nueva generación: 2560m - 786m = 1792m, entonces eso sería después del la vieja generación alcanza los 896m. Pero ese no es siempre el único parámetro. Es posible que desee agregar -XX: + UseCMSInitiatingOccupancyOnly si desea que se convierta en el único parámetro (aunque en mi experiencia, CMS realmente se desencadena en el umbral, incluso sin él).

Para resumir:

  • -Xmx es la memoria de montón total
  • -XX:NewSize / -XX:MaxNewSize es el rango del tamaño de la nueva generación dentro de ese montón
  • la diferencia es el rango del tamaño de la generación anterior
  • -XX:PermSize / -XX:MaxPermSize es el rango del tamaño de la generación permanente, que es la memoria que no es de montón

Tengo abajo las opciones de memoria configuradas:

export MEM_OPTS = "- Xmx2560m -Xms2560m -XX: NewSize = 786m -XX: MaxNewSize = 786m -XX: + UseTLAB -XX: MaxPermSize = 512m"

Los parámetros de GC son los siguientes:

exportar GC1_OPTS = "- XX: + UseConcMarkSweepGC -XX: + UseParNewGC -XX: CMSInitiatingOccupancyFraction = 50 -XX: + CMSPermGenSweepingEnabled -XX: + CMSClassUnloadingEnabled -XX: + CMSParallelRemarkEnabled -XX: + UseAdaptiveGCBoundary" exportar GC2_OPTS = "- XX: + ExplicitGCInvokesConcurrent "

Me gustaría saber, cuándo se ejecutará CMS. Se ejecutará después del 50% de 2560 MB o se ejecutará después del 50% de 512 MB de memoria.

¿Cuál es el concepto?

Mi memoria Heap total sería = 2560 + 786 + 512 MB .... ¿verdad? o "-XX: NewSize = 786m -XX: MaxNewSize = 786m" es para NON Heap. Explica el concepto.