Saltar al contenido

¿Cómo lidiar con el error “java.lang.OutOfMemoryError: Java heap space”?

Estate atento ya que en esta reseña encontrarás la solución que buscas.Esta reseña fue probado por nuestros especialistas para asegurar la calidad y veracidad de nuestro post.

Solución:

En última instancia, siempre tiene un máximo finito de almacenamiento dinámico para usar, sin importar en qué plataforma se esté ejecutando. En Windows de 32 bits, esto es todo. 2GB (no específicamente el montón sino la cantidad total de memoria por proceso). Simplemente sucede que Java elige hacer que el valor predeterminado sea más pequeño (presumiblemente para que el programador no pueda crear programas que tengan una asignación de memoria fuera de control sin encontrarse con este problema y tener que examinar exactamente lo que están haciendo).

Entonces, dado que hay varios enfoques que puede tomar para determinar qué cantidad de memoria necesita o para reducir la cantidad de memoria que está usando. Un error común con los lenguajes de recolección de basura como Java o C# es mantener referencias a objetos que usted no más está usando o asignando muchos objetos cuando podría reutilizar ellos en su lugar. Siempre que los objetos tengan una referencia a ellos, seguirán utilizando el espacio de almacenamiento dinámico, ya que el recolector de elementos no utilizados no los eliminará.

En este caso, puede usar un generador de perfiles de memoria Java para determinar qué métodos en su programa están asignando una gran cantidad de objetos y luego determinar si hay una manera de asegurarse de que ya no se haga referencia a ellos, o de no asignarlos en primer lugar. Una opción que he usado en el pasado es “JMP” http://www.khelekore.org/jmp/.

Si determina que está asignando estos objetos por una razón y necesita mantener las referencias (dependiendo de lo que esté haciendo, este podría ser el caso), solo necesitará aumentar el tamaño máximo del almacenamiento dinámico cuando inicie el programa. Sin embargo, una vez que realice el perfilado de la memoria y comprenda cómo se asignan sus objetos, debería tener una mejor idea de cuánta memoria necesita.

En general, si no puede garantizar que su programa se ejecutará en una cantidad finita de memoria (quizás dependiendo del tamaño de entrada), siempre se encontrará con este problema. Solo después de agotar todo esto, deberá analizar el almacenamiento en caché de objetos en el disco, etc. En este punto, debería tener una muy buena razón para decir “Necesito Xgb de memoria” para algo y no puede evitarlo mejorando sus algoritmos o patrones de asignación de memoria. En general, este solo será el caso de los algoritmos que operan en grandes conjuntos de datos (como una base de datos o algún programa de análisis científico) y luego las técnicas como el almacenamiento en caché y la E/S asignada a la memoria se vuelven útiles.

Ejecute Java con la opción de línea de comandos -Xmxque establece la máximo tamaño del montón.

Ver aquí para más detalles.

podrías especificar por proyecto cuánto espacio de almacenamiento dinámico quiere su proyecto

Lo siguiente es para Eclipse Helios/Juno/Kepler:

Haga clic con el botón derecho del mouse en

 Run As - Run Configuration - Arguments - Vm Arguments, 

entonces agrega esto

-Xmx2048m

Si guardas alguna vacilación y capacidad de modernizar nuestro artículo te recordamos dejar una glosa y con gusto lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *