xmn - xmx java




java.lang.OutOfMemoryError: espacio PermGen (6)

Aumenta tu MaxPermSize en tu eclipse.ini . Sugiero configurarlo a 128M o 256M si está cómodo con la RAM

-vmargs -XX:PermSize=64M -XX:MaxPermSize=128M  

También tenga en cuenta que muchas personas se enfrentaron a problemas de PermGen con Eclipse 3.2 como se informó en Perm-Gen Errors Got You Down? . Y dado que Eclipse 3.2 tiene más de 4 años, le sugiero actualizar a una versión más reciente (Eclipse 3.6 es la versión actual).

Referencias

Estoy recibiendo un error de seguimiento con frecuencia en eclipse IDE 3.2, ¿cómo podría guardar la aplicación de estos OutOfMemory?

java.lang.OutOfMemoryError: PermGen space
    java.lang.ClassLoader.defineClass1(Native Method)
    java.lang.ClassLoader.defineClassCond(Unknown Source)
    java.lang.ClassLoader.defineClass(Unknown Source)
    java.security.SecureClassLoader.defineClass(Unknown Source)
    org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1814)
    org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
    org.jboss.web.tomcat.service.WebAppClassLoader.findClass(WebAppClassLoader.java:75)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
    java.sql.DriverManager.getConnection(Unknown Source)
    java.sql.DriverManager.getConnection(Unknown Source)
    org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
    org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:111)
    org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
    org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
    com.mfic.util.HibernateUtil.<clinit>(HibernateUtil.java:16)
    com.mfic.dao.BaseHome.getSession(BaseHome.java:16)
    com.mfic.core.helper.UserManager.findByUserId(UserManager.java:248)
    com.mfic.core.action.Login.authenticate(Login.java:39)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)

Esto ocurre con bastante frecuencia al ejecutar Tomcat dentro de Eclipse durante las sesiones de depuración, etc. De memoria, es un problema con Sun JVM. Annnyway, hay una solución fácil:

Simplemente agregue lo siguiente debajo de sus -vmargs en eclipse.ini (que está en el mismo directorio que su eclipse binario):

-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled 

Esto permitirá una recolección de basura más agresiva mientras se ejecuta Eclipse, y es una solución más elegante que solo tirar más RAM en Eclipse.

¡Espero que esto ayude!


Las respuestas anteriores probablemente lo resuelvan por usted, pero aquí hay algunos enlaces relevantes interesantes de todos modos:

Aquí hay un artículo con mucha discusión y sugerencias sobre este error: http://www.jroller.com/agileanswers/entry/preventing_java_s_java_lang

Discusión de un ejemplo de cómo puede ocurrir un error OOM de Permgen: http://blogs.oracle.com/fkieviet/entry/classloader_leaks_the_dreaded_java

Aquí hay una solución real, publicada recientemente en . Es para Tomcat pero puede ser utilizable en Eclipse: lidiar con el error "java.lang.OutOfMemoryError: PermGen space"


Si obtiene el error cuestionado en la aplicación Eclipse secundaria, agregar -XX:MaxPermSize=512m en ini no ayudará. Debes entrar en debug or run configuration->arguments y agregar esa pieza en los argumentos de VM. También aumenté otros límites de memoria así:

-Dosgi.requiredJavaVersion=1.5 -Xms120m -Xmx2048m -XX:MaxPermSize=1024m

Eso ayudo.

Editar. Después de algunos experimentos que he encontrado, que Eclipse toma límites de memoria del archivo ini. Pero ... lo hace solo una vez, en la creación de un nuevo espacio de trabajo. Los parámetros de -vmarg en eclipse.ini crean la línea de parámetros de VM por defecto. Por lo tanto, si está trabajando en el área de trabajo existente, cambie la configuración de depuración o ejecución. Pero cambie eclipse.ini, también, por un futuro mejor.


Y también después de probar las opciones anteriores, verifique con JVM actualizado. Estaba usando jdk1.6 y enfrenté el mismo problema. Cuando cambié el jvm en eclipse a JDK1.7, funciona bien.


  • Haga clic en Instancia de servidor.
  • Abrir configuraciones de inicio.
  • Aumente la memoria de JVM, en la pestaña argumento.

-Xms64m -Xmx256m

Ver imágenes a continuación: