Cómo resolver el problema java.lang.OutOfMemoryError
1. La cantidad de datos cargados en la memoria es demasiado grande, por ejemplo, se cargan demasiados datos desde la base de datos a la vez
2. Hay referencias de objetos en la clase de colección, que no se borran después de su uso, lo que hace que la JVM no pueda reciclar;
3. Hay un bucle infinito en el código o hay demasiadas entidades de objetos duplicadas. generado en el bucle;
4. El tercero utilizado Hay un error en el software
5. El valor de memoria del parámetro de inicio es demasiado pequeño; >
Solución; 1. El servidor de aplicaciones muestra un error Solución: establezca un valor de memoria suficientemente grande para el parámetro de inicio.
2. Soluciones a errores causados por el código Java: céntrese en los siguientes puntos:
1) Compruebe si hay bucles infinitos o llamadas recursivas en el código.
2) Compruebe si hay un ciclo grande que genera repetidamente nuevas entidades de objetos.
3) Compruebe si existe una consulta a la base de datos para obtener todos los datos a la vez. En términos generales, si recupera 100.000 registros en la memoria a la vez, la memoria se desbordará. Este problema está relativamente oculto. Antes de la operación, hay menos datos en la base de datos y es menos probable que cause problemas. Después de la operación, hay más datos en la base de datos y una sola consulta puede provocar un desbordamiento de la memoria. Por lo tanto, para consultas de bases de datos, intente utilizar consultas de paginación.
4) Compruebe si la Lista, el MAP y otros objetos de la colección no se borran después de su uso. Los objetos de lista, MAP y otros objetos de colección siempre tendrán una referencia al objeto, lo que evitará que el GC los recicle.
Caso: 1. Cuando Hibernate estaba consultando datos, la cantidad de datos consultados a la vez era demasiado. Posteriormente, algunos códigos se ajustaron para consultar solo la cantidad de datos especificada cada vez, lo que resolvió con éxito el problema. problema. 2. Al realizar pruebas de estrés, se produce un OutOfMemoryError y se descubre que los recursos de la sesión no se han liberado ni generado. Es mejor liberar los recursos de la sesión mediante el método invalidar () de la sesión. 3. El programa tiene un bucle infinito. 4. Implemente Tomcat, ejecute OutOfMemoryError y aumente el valor del parámetro de memoria para resolver este problema.