Manejo de errores de PermGen en la tarea de ant bpelc

votos
2

He estado presionando un java.lang.OutOfMemoryError: error de PermGen al compilar un proyecto con ant en Linux con jdk 1.5.0_11. el mismo proyecto se compila bajo Windows sin problema.

Por lo general, esto se relaciona con el MaxPermSize asignado a la JVM. Irakli Nadareishvili tiene una de las mejores explicaciones de los errores de PermGen y una guía para configurar Java HotSpot VMOptions (por ejemplo, -XX: MaxPermSize = 128M)

En este caso, reduje rápidamente el problema a una tarea de hormigas bpelc en particular

<bpelc input=${build.dir}/bpel/bpel.xml 
out=${build.dir}/output rev=${version} home=${bpel.home}/>

Ahora no creo que bpelc tome el elemento compilerarg como javac:

  <javac srcdir=${src.dir}
         destdir=${classes.dir}
         classpathref=libraries>
    <compilerarg value=-XX:MaxPermSize=128M/>
  </javac> 

Entonces, ¿cómo solucionar el error de la tarea bpelc? La mejor solución que he encontrado hasta ahora es establecer la variable de entorno ANT_OPTS . Esto parece haber evitado el problema hasta la fecha.

export ANT_OPTS=-XX:MaxPermSize=128m

¿Alguien puede arrojar más luz? ¿Es eso una solución segura?

Publicado el 10/12/2008 a las 21:26
por usuario
En otros idiomas...                            


1 respuestas

votos
2

Cuando la bpelctarea se ejecuta dentro de la ejecución JVM original, entonces la configuración ANT_OPTS(o algo equivalente) es la única solución posible.

Una de esas cosas equivalentes podría ser refactorizar esa tarea a un segundo archivo de compilación de ant y ejecutarlo usando una JVM separada. No es realmente más agradable, pero dependiendo de su entorno podría ser más fácil de implementar.

Respondida el 10/12/2008 a las 21:33
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more