Cuáles Son Las Causas Del Error Java.lang.outofmemoryerror: Permgen Space Failure

De repente te has encontrado con un error en tu computadora que asoma este texto java.lang.OutOfMemoryError: PermGen space failure y sucede que quieres saber cuáles son las causas del error que produce que se despliegue este texto en tu computador.

Es por ello que en este artículo te facilitaremos todo lo referente a ese problema, que es causado por la ejecución en Java y que se debe a que se agota el área de generación permanente del PermGen, y colapsa el sistema operativo.

Índice

    El Error Java.lang.outofmemoryerror: Permgen Space failure

    El Error Java.lang.outofmemoryerror: Permgen Space failure

    Cuando en tu computadora te aparece este texto: java.lang.OutOfMemoryError: PermGen Space failure se refiere a un error de tiempo de ejecución en Java que ocurre cuando se agota el área de generación permanente (PermGen) en la memoria.

    Esa área PermGen del montón de Java se utiliza para poder almacenar los metadatos como declaraciones de clases, métodos y matrices de objetos. Por ello, los requisitos del tamaño de PermGen dependerá del número de clases y métodos, así como de su tamaño.

    En este sentido, la memoria Java se divide en diferentes regiones: Young, Tenured y PermGen, y los tamaños de estas regiones, estarán incluida el área de PermGen, se establecen cuando se inicia la JVM, pues si no se especifican estos tamaños, se utilizarán los valores predeterminados específicos de la plataforma.

    De este modo, las aplicaciones Java solo podrán ser utilizadas una cantidad limitada de memoria, y en PermGen se puede agotar fácilmente si hay una gran cantidad de clases, objetos o métodos en una aplicación, es por ello que el tamaño de PermGen se podrá especificar usando los argumentos de JVM -XX:PermSizey -XX:MaxPermSize dependiendo de las necesidades de la aplicación.

    También puedes leer Cómo Arreglar El Error 0xc0000142 en Windows 

    Cuáles son las causas del error  Java.lang.outofmemoryerror: Permgen Space failure

    Cuáles son las causas del error  Java.lang.outofmemoryerror: Permgen Space failure

    Cuando surge este problema en tu sistema operativo se debe a las siguientes situaciones:

    1. El área PermGen del montón de Java contiene principalmente las siguientes situaciones que se dan:

    • Las declaraciones de clase, incluidos campos y nombres de clase.
    • Métodos con el bytecode del método.
    • Información constante sobre la piscina.
    • Matrices de objetos y matrices de tipos asociadas con una clase.
    • Optimizaciones del compilador Just In Time.

    Y todo ello producirá del tamaño de PermGen que depende tanto del número de clases cargadas como del tamaño de las declaraciones de clase, por ello, la causa principal del error java.lang.OutOfMemoryError: PermGen Space failure son demasiadas clases o las clases son demasiado grandes, y son cargadas en PermGen.

    Todo esto produce que la aplicación cargue demasiadas clases, y a la hora de cargar las clases, la JVM lo hace bajo demanda y en la práctica esto se transforma en:

    • Creación de un objeto relativo a una clase, es decir, llamada mediante el operador new.
    • Acceder a algún método o atributo estático de la clase.

    En este sentido se debe decir que una vez que una clase es cargada en el ClassLoader no será descargada del mismo y a su vez se mantiene una referencia desde el ClassLoader a la Clase y desde la clase al ClassLoader que le ha cargado. Todo esto se encontrará almacenado en la memoria PermGen, de tal modo que conforme se acceden las diferentes clases que son utilizadas por la aplicación aumentará el tamaño ocupado.

    2. Otra causa de este error es que la aplicación utilice muchas cadenas "internas" String.intern, que es una optimización de la JVM para poder permitir optimizar la comparación entre las cadenas.

    Dicha comparación carácter a carácter entre cadenas es muy lenta, por ello se mantiene un lista de cadenas instanciadas, de tal forma que permitirá una comparación de identidades que es mucho más rápida.

    De este modo el problema de esto es que la lista utilizada para la comparación de las cadenas es establecida en la memoria PermGen y en algunos casos el tamaño de ella puede ser demasiado elevado. Por ejemplo se da en algunos parses de XML, los cuales genera cadenas "internas" muy grandes, y pueden provocar este tipo de excepción: Document doc = SAXParser.new().parse( cadenaXML ).

    3. Otra causa de este error son las Fugas de Memoria o Memory Leaks, que se producen cuando re-desplegamos la aplicación, ya que en los servidores de las aplicaciones se suele cargar el ClassLoader de cada una de estas aplicaciones que se cargan.

    Si cuando re-desplegas la aplicación no se eliminará de forma correcta el ClassLoader anterior, y se mantendrá en la memoria PermGen y se sumará al espacio ocupado por la nueva aplicación. Cuando re-desplegamos un par de veces la aplicación, provocará que agotemos la memoria PermGen.

    Cómo solucionar el error  Java.lang.outofmemoryerror: Permgen Space failure

    Cómo solucionar el error  Java.lang.outofmemoryerror: Permgen Space failure

    Para solucionar el error java.lang.OutOfMemoryError: PermGen Space failure puede hacerlo siguiendo estos pasos:

    • PRIMER PASO

    Tienes que aumentar el tamaño de la memoria PermGen. Ésta suele ser la primera medida a tomar, aunque no siempre resuelve los problemas sino que los aplaza y a veces puede derivar en problemas con el colector de basura o en problemas con la escasez de memoria dinámica con este código: -XX:MaxPermSize=128m

    • SEGUNDO PASO

    Luego en el caso de los multiprocesadores puedes establecer un colector de basura concurrente, el cual puede "eliminar" ma memoria PermGen, cosa que el colector por defecto no puede hacer. Para ello primero cambiamos el algoritmo del colector de basura al siguiente: -XX:+UseConcMarkSweepGC

    • TERCER PASO

    Después debes habilitar en la JVM la posibilidad de "eliminar" la memoria PermGen: -XX:+CMSPermGenSweepingEnabled

    • CUARTO PASO

    Por último las clases son un caso particular a la hora de gestionarlas en la memoria PermGen, por ello tienes que indicarle a la JVM la posibilidad de permitir que descargue las clases con este código: -XX:+CMSClassUnloadingEnabled

    También puedes leer Cómo Solucionar El Error De PCL XL En Windows 10 

    Como se pudo ver el error java.lang.OutOfMemoryError: PermGen space failure es poco común, y sus causas son presentadas en este artículo en pro a evitar dicho problema, que es muy fácil de solventar al seguir los pasos presentados anteriormente.

    En este sentido te invitamos a que cumplas todo lo presentado en este artículo y tener tu sistema operativo limpio de errores, y trabajar sin ningún problema en tu computadora.

    SER-PlagiarismCuáles son las causas del error  Java.lang.outofmemoryerror_ Permgen Space failure Report

    TE PUEDE INTERESAR

    Deja un comentario

    Tu dirección de correo electrónico no será publicada.

    Go up