jvm optimización del rendimiento


jvm optimización del rendimiento

 

**************************

Optimización del proyecto: sistema operativo, arquitectura del proyecto, código del programa, base de datos, parámetros jvm

 

Optimización del sistema operativo: memoria, CPU, dispositivos de almacenamiento, etc.

Optimización de la arquitectura del proyecto: diseñe una arquitectura razonable para la aplicación

Optimización del código del programa: evite cargar demasiados objetos a la vez, no haga referencia a objetos de período corto con variables de larga duración, etc.

Optimización de la base de datos: diseñe una base de datos razonable y una estructura de tabla para el proyecto

 

jvm optimization: recolector de basura y configuraciones de parámetros de memoria

Nota: Antes de la optimización de jvm, es necesario optimizar la arquitectura del proyecto, el código, etc. Si la arquitectura del proyecto o el diseño del código es insuficiente, el ajuste de los parámetros de jvm tiene poco efecto en el rendimiento de la aplicación

 

 

**************************

Indicadores de evaluación de ajuste JVM : memoria, rendimiento, latencia

 

Memoria: la memoria requerida para el funcionamiento normal del programa.

Rendimiento: la relación entre el tiempo de ejecución de la aplicación y el tiempo total (tiempo de ejecución de la aplicación + tiempo de recolección de basura)

Retraso: el tiempo de pausa de la aplicación durante la recolección de basura

 

El objetivo del ajuste de jvm es lograr un mayor rendimiento o una menor latencia con menos memoria , pero estos tres objetivos no se pueden lograr al mismo tiempo:

Si configura una memoria más grande , la recolección de basura tardará más tiempo, lo que provocará un retraso mayor ;

Si configura una memoria más baja , se activará la recolección de basura frecuente, lo que afectará el rendimiento

 

 

**********************

Recolector de basura : un solo subproceso, paralelo, concurrente, debe elegir el recolector de basura adecuado de acuerdo con el escenario de la aplicación

 

***************

Recolector de basura de un solo subproceso: serial (nueva generación), serial antiguo (vieja generación)

 

Características: Durante la recolección de basura, los hilos de usuario dejan de funcionar y solo hay un hilo de recolección de basura

Escenarios de aplicación: adecuados para aplicaciones de escritorio, con docenas o cientos de megabytes de basura recolectada y tiempos de pausa cortos causados ​​por la recolección de basura

 

Parámetros relacionados

-XX: + UseSerialGC: use la combinación de recolección de basura antigua serial + serial

 

***************

Recolector de basura paralelo : barrido paralelo (nueva generación), paralelo antiguo (vieja generación)

 

Características: Durante la recolección de basura, el subproceso de usuario se detiene y puede haber múltiples subprocesos de recolección de basura

Escenario de aplicación: el barrido paralelo es un primer recolector de basura de rendimiento, que proporciona parámetros para controlar el tiempo máximo de pausa y el rendimiento

 

Parámetros relacionados

-XX: + UseParallelGC: use una combinación paralela de barrido + combinación de recolector de basura antiguo paralelo

-XX: + UseParallelOldGC: use la combinación paralela del recolector de basura + paralela antigua, este parámetro java14 se deshabilitará y puede eliminarse en el futuro

Java HotSpot(TM) 64-Bit Server VM warning: Option UseParallelOldGC was deprecated
 in version 14.0 and will likely be removed in a future release.

 

-XX: ParallelGCThreads: establece el número de hilos de reciclaje concurrentes

-XX: MaxGCPauseMillis: la pausa máxima en milisegundos, si la memoria de almacenamiento dinámico es demasiado grande, el tiempo de pausa durante la recolección de basura puede exceder el valor establecido

-XX: GCTimeRatio: rendimiento, el valor predeterminado es 99, y el uso máximo del 1% del tiempo para recolectar basura

-XX: + UseAdaptiveSizePolicy: ajusta automáticamente el tamaño de la generación joven (-Xmn), la relación de eden a sobreviviente (-XX: SurvivorRatio) y otros parámetros

 

***************

Recolector de basura concurrente: G1 (nueva generación, vieja generación)

 

Características: durante la recolección de basura, los subprocesos de usuario pueden funcionar, solo una breve pausa, puede haber múltiples subprocesos de recolección de basura

Escenario de aplicación: adecuado para escenarios de pausa baja, en comparación con la combinación paralela de barrido + paralelo antiguo, el tiempo de pausa de G1 es más controlable

 

Parámetros relacionados

-XX: + UseG1GC: use el recolector de basura G1

 

 

**********************

Configuración de parámetros de memoria: en circunstancias normales, el uso de los parámetros predeterminados puede cumplir los requisitos de rendimiento

 

***************

Parámetros comunes

 

-Xms: establece el valor mínimo del montón

-Xmx: establece el valor máximo del montón

 

-XX: NewSize: establece el valor mínimo de la nueva generación

-XX: MaxNewSize: establece el valor máximo de la nueva generación

-Xmn: establezca el nuevo tamaño de generación, que es equivalente a establecer NewSize y MaxNewSize en el mismo valor

 

-XX: NewRatio: establece la relación entre la nueva generación y la generación anterior, el valor predeterminado es 2, es decir, la nueva generación: generación anterior = 1: 2

-XX: SurvivorRatio: establece la proporción de eden y survivor, el valor predeterminado es 8, es decir, eden: survivor = 8: 1

 

***************

Medidas de optimización

 

Establezca un tamaño de almacenamiento dinámico inicial razonable o establezca el tamaño de almacenamiento dinámico máximo y mínimo en el mismo, para evitar que la escala de memoria de almacenamiento dinámico afecte el rendimiento;

Ajuste el tamaño de la memoria de la generación anterior para evitar activar gc completo con frecuencia;

Ajuste el tamaño de la memoria de la generación joven para evitar la activación frecuente de la generación joven gc, lo que resulta en una gran cantidad de objetos que ingresan a la generación anterior;

Utilice recolectores de basura paralelos o concurrentes para la recolección de basura ;

Considere usar una versión alta de jdk, la versión estable de la versión alta de jdk generalmente tiene un mayor rendimiento

 

 

387 artículos originales publicados · Me gusta 98 · Visitas 30,000+

Supongo que te gusta

Origin blog.csdn.net/weixin_43931625/article/details/105274183
Recomendado
Clasificación