Configuración de desbordamiento de memoria Tomcat Java_opts
Respuesta 1
Establezca la memoria inicial para el inicio de Tomcat
Su espacio inicial (es decir, -xms) es 1/64 de memoria física, y el espacio máximo (-xmx) es 1/4 de memoria física. Puede usar el -xmn -xms -xmx y otras opciones proporcionadas por el JVM
Hacer configuración
3. Ejemplos, lo siguiente proporciona la referencia para establecer parámetros de Java JVM en el entorno de memoria 1G:
Java_opts = " -servidor -xms800m -xmx800m
-Xx: permSize = 64m -xx: maxNewsize = 256m -xx: maxPermsize = 128m -djava.awt.headless = true "
Java_opts = " -servidor -xms768m -xmx768m -xx: permSize = 128m -xx: maxPermsize = 256m -xx:
Newsize = 192m -xx: maxNewsize = 384m "
Catalina_opts = " -servidor -xms768m -xmx768m -xx: permSize = 128m -xx: maxPermsize = 256m
-Xx: newsize = 192m -xx: maxNewsize = 384m "
Linux:
Catalina.Sh en /usr/local/apache-tomcat-5.5.23/bin directorio
Agregado: java_opts = ' -xms512m -xmx1024m'
Si desea agregar "M", significa que es MB, de lo contrario será KB, y no habrá memoria suficiente al comenzar TomCat.
-Xms: valor inicial
-Xmx: valor máximo
-Xmn: valor mínimo
Windows
Únete frente a Catalina.
Establecer java_opts = -xms128m -xmx350m
Si comienza a Tomcat con Startup.bat, la configuración OK entrará en vigencia. La memoria de 200 m se asignará con éxito.
Sin embargo, si no ejecuta startup.bat para iniciar Tomcat, pero use el servicio del sistema de Windows para iniciar el servicio Tomcat, la configuración anterior no entrará en vigencia.
Es decir, establecer java_opts = -xms128m -xmx350m no funciona. Si asigna 200 metros de memoria arriba, estará OOM ...
El servicio de Windows ejecuta bin/tomcat.exe. Lee el valor en el registro, no en la configuración de Catalina.Bat.
Solución:
Modifique el registro HKEY_LOCAL_MACHINE/Software/Apache Software Foundation/Tomcat Service Manager/Tomcat5/Parameters/JavaOptions
El valor original es
-Dcatalina.home = "c:/apachegroup/tomcat 5.0"
-Djava.endorsed.dirs = "c:/apachegroup/tomcat 5.0/común/respaldo"
-Xrs
Agregar -xms300m -xmx350m
Reinicie el servicio Tomcat y la configuración surta efecto
Respuesta 2
Solución de problemas de desbordamiento de memoria JVM de Tomcat
Palabra clave: solución de problemas de desbordamiento de memoria JVM de Tomcat
Recientemente, estoy familiarizado con un proyecto que se ha desarrollado durante varios años. Necesito portar la base de datos desde MySQL a Oracle. Primero, apunte a la conexión JDBC a MySQL, empaquétela en Tomcat y ejecútala. No hay problema. Sin embargo, al señalar la conexión JDBC con Oracle, Tomcat lanza continuamente el error Java.lang.OutOfMemoryError, Google Internet, comprende el mecanismo operativo de Tomcat y resuelve el problema. Compártalo como referencia.
1. Primero es: java.lang.OUTOFMemoryError: Java Heap Space
explicar:
Configuración del tamaño del montón
La configuración del montón JVM se refiere a la configuración del espacio de memoria que el JVM puede provisar durante la ejecución del programa Java. Cuando se inicia el JVM, establecerá automáticamente el valor del tamaño del montón. Su espacio inicial (es decir, -xms) es 1/64 de memoria física, y el espacio máximo (-xmx) es 1/4 de memoria física. Puede usar -xmn -xms -xmx y otras opciones proporcionadas por el JVM para configurarlo. El tamaño del tamaño del montón es la suma de la generación joven y la generación titular.
Consejo: Este mensaje de excepción se enviará si el 98% del tiempo se usa para GC y el tamaño del montón disponible es inferior al 2%.
Consejo: El tamaño máximo del montón no debe exceder el 80% de la memoria física disponible. En general, establezca las opciones -xms y -xmx a las mismas, mientras que -xmn es 1/4 del valor -xmx.
Solución:
Establezca el tamaño del montón manualmente
Modifique tomcat_home/bin/catalina.bat y agregue la siguiente línea a "hacer eco" usando catalina_base: $ catalina_base ":
Código Java
Establecer java_opts =% java_opts% -server -xms800m -xmx800m -xx: maxNewsize = 256m
Establecer java_opts =% java_opts% -server -xms800m -xmx800m -xx: maxNewsize = 256m
O modificar Catalina.sh
Agregue la siguiente línea a "Echo" usando Catalina_Base: $ Catalina_Base ":
Java_opts = "$ java_opts -server -xms800m -xmx800m -xx: maxnewsize = 256m"
2. En segundo lugar: java.lang.OUTOFMemoryError: espacio de Permgen
razón:
El nombre completo del espacio de Permgen es el espacio de generación permanente, que se refiere al área de almacenamiento permanente de la memoria. Esta memoria está almacenada principalmente por el JVM en clase y meta información. La clase se colocará en el espacio de Permgen cuando se cargue. Es diferente del área del montón donde se almacena la instancia de clase (instancia). GC (recolección de basura) no limpiará el espacio de Permgen durante el tiempo de ejecución del programa principal. Por lo tanto, si hay mucha clase en su aplicación, es muy probable que ocurra un error de espacio de Permgen. Este error es común cuando el servidor web precompila JSP. Si usa una gran cantidad de frascos de terceros en su aplicación web, el tamaño excede el tamaño predeterminado de JVM (4m), entonces se generará este mensaje de error.
Solución:
1. Establezca manualmente el tamaño MaxPermizize
Modificar tomcat_home/bin/catalina.bat (catalina.sh bajo Linux), en código Java
"Echo" usando Catalina_Base: $ Catalina_Base "" Agrega la siguiente línea:
Establecer java_opts =% java_opts% -server -xx: permSize = 128m -xx: maxPermsize = 512m
"Echo" usando Catalina_Base: $ Catalina_Base "" Agrega la siguiente línea:
Establecer java_opts =% java_opts% -server -xx: permSize = 128m -xx: maxPermsize = 512m
Catalina.sh es:
Código Java
Java_opts = "$ java_opts -server -xx: permSize = 128m -xx: maxPermsize = 512m"
Java_opts = "$ java_opts -server -xx: permSize = 128m -xx: maxPermsize = 512m"
También vi otra publicación y pensé que era muy bueno. Los extractos son los siguientes:
Análisis java.lang.OutofMemoryError: Espacio de Permgen
Descubrí que muchas personas atribuyen el problema a: Spring, Hibernate, Tomcat, porque generan clases dinámicamente, lo que hace que el montón permanente en el JVM se desborde. Luego hay muchas opiniones diferentes sobre la solución. Algunas personas dicen que actualizar la versión Tomcat a lo último ni siquiera es necesario Tomcat. Algunas personas también dudan del problema de la primavera, y hace mucho calor en el foro de primavera, porque el uso de CBLIB en primavera cuando AOP generará dinámicamente muchas clases.
Pero la pregunta es por qué ocurre el mismo problema con este código abierto de la tarjeta Trump, entonces, ¿es una razón más básica? Tomcat respondió esto de una manera muy oscura en Q&A. Conocemos esta pregunta, pero esta pregunta surge de una pregunta más básica.
Entonces, alguien revisó el JVM más básico y encontró la clave del problema. Resulta que el JVM de Sun divide la memoria en diferentes áreas, una de las cuales es el área de PERMENTER para almacenar muchas clases y descripciones de clases. Originalmente, cuando se diseñó Sun, se creía que esta área se solucionó cuando se inició el JVM, pero no esperaba que la dinámica se usara tan ampliamente ahora. Además, esta área tiene un mecanismo especial de recolección de basura. El problema actual es que después de cargar dinámicamente la clase en esta área, ¡GC no puede reciclarla!
Para las dos preguntas anteriores, mi manejo es:
Agregue la primera línea de Catalina.Bat:
Código Java
Establecer java_opts = -xms64m -xmx256m -xx: permSize = 128m -xx: maxNewsize = 256m -xx: maxPerMsize = 256m
Establecer java_opts = -xms64m -xmx256m -xx: permSize = 128m -xx: maxNewsize = 256m -xx: maxPerMsize = 256m
Agregue la primera línea de Catalina.sh:
Código Java
Java_opts =
-Xms64m
-Xmx256m
-Xx: permSize = 128m
-Xx: maxNewsize = 256m
-Xx: maxPermsize = 256m
La solución perfecta para el desbordamiento de la memoria Tomcat en el artículo anterior es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.