Linux /centos resuelve el desbordamiento de memoria de Tomcat

  
        Tomcat no se puede ejecutar directamente en una computadora y depende del sistema operativo y de una máquina virtual JAVA. Cuando se inicia el programa JAVA, la JVM asigna una memoria inicial y una memoria máxima a la APP. Cuando la memoria requerida por la APP excede la memoria máxima, la máquina virtual solicitará un desbordamiento de memoria y causará que el servicio de la aplicación se bloquee. Primero, el desbordamiento de memoria de Java común tiene los siguientes tres:

1. java.lang.OutOfMemoryError: Desbordamiento del montón de JVM del espacio del montón de Java
Explicación: JVM establecerá automáticamente el valor del montón de JVM al iniciar, JVM La configuración de almacenamiento dinámico se refiere a la configuración del espacio de memoria que la JVM puede utilizar durante la ejecución del programa java. El espacio inicial por defecto es 1/64 de la memoria física, y el espacio máximo no puede exceder la memoria física. La JVM proporciona opciones tales como -Xmn -Xms -Xmx para la configuración. Escenario de error: en la JVM, si el 98% del tiempo es para GC y el tamaño del montón disponible es inferior al 2%, se producirá la resolución de desbordamiento del montón de JVM: modifique el tamaño del montón de JVM. 2. java.lang.OutOfMemoryError: espacio PermGen, es decir, desbordamiento de espacio PermGen

Explicación: el espacio PermGen se refiere al área de almacenamiento permanente de la memoria. Esta área almacena principalmente información de clase y meta, y la clase se colocará en el espacio de PermGen cuando se cargue.
Escenario de error: si la aplicación carga una gran cantidad de CLASS, puede ocurrir un desbordamiento de espacio de PermGen.
(Debido a que el GC de sun no limpia el espacio de PermGen mientras el programa se está ejecutando) Comúnmente cuando el servidor web precompila la Solución JSP: modifique el tamaño de MaxPermSize

3. java.lang.StackOverflowError desbordamiento de pila
Explicación: la JVM utiliza una pila de máquinas virtuales, y el proceso de llamada de las funciones se refleja en la pila y en el desapilamiento. Escenario de error: por lo general, el tamaño de la pila es de 1-2 MB. Si la "capa" del constructor es demasiado, habrá una solución de desbordamiento de pila: modifique el programa 2. La solución de desbordamiento de memoria JVM de Tomcat está en el entorno de producción. La configuración de la memoria de Tomcat no es fácil de desbordar de la memoria JVM, la solución es modificar el archivo catalina.sh en Tomcat.

En el archivo catalina.sh, encuentre cygwin = falso, agregue los parámetros al frente de esta línea, como sigue
# vi TOMCAT_HOME /bin /catalina.shJAVA_OPTS = " -server -Xms800m -Xmx800m -XX: PermSize = 256m -XX: MaxPermSize = 512m -XX: MaxNewSize = 512m " Otras notas: 1. <quo; m " indica que la unidad es MB; de lo contrario, el valor predeterminado es KB2. Por lo general, use el 80% de la memoria física como el tamaño del montón 3. Generalmente put -Xms Se configura para que sea tan grande como -Xmx. 4. Generalmente se establece -Xmn a 1/45 del valor de -Xmx. Generalmente, asigne del 50% al 60% del tamaño total del montón al grupo generado recientemente. 3. jvm Descripción del parámetro: -server Para ser el primer parámetro, habilite la versión del servidor JDK, que funciona bien en varias CPU, el tamaño inicial del montón de java de Xms. El valor predeterminado es 1/64 de memoria física. -Xmx java montón máximo. Las recomendaciones están configuradas al 80% de la memoria física. No exceda la memoria física. -XMínio de pila java, generalmente establecido en 3 o 4 de Xmx. -XX: PermSize Establece el tamaño inicial del área de almacenamiento permanente de la memoria. El valor predeterminado es 64M. -XX: MaxPermSize Establece el tamaño máximo del área de almacenamiento permanente de la memoria. El valor predeterminado es 64M. -XX: SurvivorRatio = 2 El tamaño del grupo de sobrevivientes. El valor predeterminado es 2. Por ejemplo, -XX: NewSize el tamaño inicial de la agrupación recién generada. El valor predeterminado es 2M. -XX: MaxNewSize El tamaño máximo de la agrupación recién generada. El valor predeterminado es 32M. + XX: AggressiveHeap Deje que jvm ignore el parámetro Xmx, coma frenéticamente una memoria física de G y luego coma un intercambio de G. -Xss Tamaño de pila por hilo - detallado: gc Información de recolección de basura real - Xloggc: gc.log Especifique el archivo de registro de recolección de basura -XX: + UseParNewGC Reduce el tiempo de recolección menor -XX: + UseConcMarkSweepGC Reduce el tiempo de recolección principal -XX: userParNewGC se puede usar para establecer una colección paralela (CPU múltiple) - XX: ParallelGCThreads se puede usar para aumentar el paralelismo (CPU múltiple) - XX: UseParallelGC se puede configurar para usar un colector de limpieza paralelo (CPU múltiple)

Copyright © Conocimiento de Windows All Rights Reserved