Deshabilite el UseGCOverheadLimit en CentOS

Necesito deshabilitar el límite de sobrecarga del GC en mi servidor CentOS . El motivo de esto es evitar temporalmente java.lang.OutOfMemoryError: GC overhead limit exceeded excepciones.

Pero soy cero en los sistemas Linux + Java y no tengo ninguna pista sobre cómo ejecutar esta línea de comandos: -XX:-UseGCOverheadLimit

Tendrá que pasarlo a la JVM como un argumento. Usted dice que está alojando una aplicación web en Apache Tomcat. Puede establecer la variable de entorno CATALINA_OPTS para que sea igual a -XX:-UseGCOverheadLimit . Tendrá que hacer esto en el script que realmente inicia Tomcat si lo ejecuta como un servicio, y de hecho, el script Tomcat para CentOS probablemente tenga una variable CATALINA_OPTS que puede agregar o configurar.

Dicho esto, la eliminación de la capacidad del recolector de basura para lanzar un OutOfMemoryError (OOME) debido a la sobrecarga puede no solucionar el problema. OOME debido a gastos generales básicamente significa que el progtwig no estaba haciendo ningún progreso útil debido a que las operaciones del GC tomaron mucho tiempo. Esto puede suceder cuando la memoria libre es muy baja y se deben hacer muchos pases completos de GC con frecuencia. Si deshabilita el error, es posible que el progtwig simplemente deje de responder antes de que finalmente se quede sin memoria en el montón en un punto indefinido en el futuro, lo que aún causará que se arroje un OOME por espacio de stack en lugar de gastos generales.

Una solución mejor sería, en cambio, boost la cantidad de memoria que Tomcat puede usar mediante el uso del argumento -Xmx (nuevamente pasado a través de CATALINA_OPTS ). -Xmx2g establecería el máximo de -Xmx2g dynamic en 2 GiB, por ejemplo.