¿Cuáles son los principales tipos de desbordamiento de memoria de Java?
El primer OutOfMemoryError: espacio PermGen.
La intención original de este problema es que se utilice una gran cantidad de jar o clases en el programa, lo que provoca que el espacio para cargar clases en la máquina virtual Java sea insuficiente. Esto está relacionado con el espacio de generación permanente. Hay dos métodos para resolver este tipo de problema:
1. Aumentar el tamaño de los parámetros XX:PermSize y XX:MaxPermSize en la máquina virtual Java, donde XX:PermSize es el tamaño del área de almacenamiento permanente inicial. y XX:MaxPermSize es el tamaño máximo de almacenamiento permanente. Para tomcat6.0, agregue una línea al final de una serie de nombres de variables de entorno en el archivo catalina.sh o catalina.bat (alrededor de 70 líneas):
JAVA _ OPTS = "-XX:PermSize = 64M- XX:MaxPermSize = 128m "
Si es un servidor Windows, también se puede configurar en la variable de entorno del sistema. Siento que este tipo de error de desbordamiento de memoria es fácil de ocurrir cuando se usa Tomcat para publicar programas de arquitectura sprint + struts + hibernate. Usando el método anterior, resolví con éxito el problema del tiempo de inactividad frecuente del servidor Tomcat que implementa el proyecto ssh.
2. Limpie los frascos en web-inf/lib en la aplicación. Si Tomcat implementa varias aplicaciones y muchas aplicaciones usan el mismo jar, puede mover el jar con ** a la biblioteca con Tomcat ** para reducir la carga repetida de clases.
Segundo error de falta de memoria: espacio de almacenamiento dinámico de Java
La razón de este problema es que la máquina virtual Java crea demasiados objetos y el espacio de memoria de almacenamiento dinámico asignado por la máquina virtual es Se ha agotado antes de la recolección de basura, lo que está relacionado con el espacio del montón. Hay dos formas de resolver este tipo de problemas:
1. Verifique el programa para ver si hay un bucle infinito o una creación repetida innecesaria de una gran cantidad de objetos. Después de encontrar la causa, modifique el programa y el algoritmo.
Cuando solía escribir un algoritmo de agrupamiento de texto K-Means para agrupar decenas de miles de registros de texto (el vector de características de cada registro es aproximadamente 10), el problema de desbordamiento de memoria en el espacio del montón de Java se debía Algunos problemas fueron causados por detalles del programa, que luego se resolvieron modificando el programa.
2. Aumente el tamaño de los parámetros Xms (tamaño de montón inicial) y Xmx (tamaño de montón máximo) en la máquina virtual Java. Por ejemplo: configure Java _ opts =-xms 256m-xmx 1024m.
El tercer tipo de error de falta de memoria: no se puede crear un nuevo hilo nativo
Este tipo de error es fácil de ocurrir cuando hay muchos hilos Java.