tutorial que instalar example español java grails groovy jvm

java - que - ¿Solución de problemas de fugas de memoria Grails/Groovy?



grails vs spring (7)

¿Está el problema que tiene en desarrollo o producción?

Si está en desarrollo, recuerde que Grails está constantemente compilando muchos aspectos de su aplicación (no solo los cambios de dominio, sino también los cambios de controlador, y otras clases). También tengo problemas con PermGen, pero la mayoría son provocados por la compilación constante de los archivos en los que estoy trabajando. Puedes desactivar esta característica

http://www.grails.org/FAQ#Q:%20OMG%20I%20get%20OutOfMemoryErrors%20or%20PermGen%20Space%20errors%20when%20running%20Grails%20in%20development%20mode.%20What%20do%20I%20do ?

Si estás en producción, obviamente tienes un problema mucho más crítico. Los problemas de memoria de PermGen se atribuyen a muchos de los marcos en los que se basa Grails, incluidos Spring, Hibernate e incluso la propia JVM de Sun. Puede intentar ajustar el tamaño máximo de almacenamiento dinámico para su contenedor web (Tomcat o Jetty).

También puede probar una implementación diferente de la JVM, como JRockit de Oracle, que se supone que es considerablemente mejor en la recolección de basura y otros medios de eficiencia. Nunca lo he intentado yo mismo, pero como también estoy en medio de un extenso proyecto Grails en desarrollo, es posible que yo también esté buscando soluciones para estos problemas. ¡Buena suerte!

Tengo una aplicación Grails que hace una cantidad bastante decente de creación y destrucción de objetos de dominio, y parece que se queda sin espacio PermGen a una velocidad muy, muy rápida. He hecho los ajustes habituales (puse el PermGen a 256M, habilitó la clase GC, etc.), pero no los dados.

¿Le importaría a alguien recomendar algunas herramientas (y con suerte gratis o de muy bajo costo) para solucionar este tipo de consumo de memoria en Groovy y / o Java? ¿O algunas técnicas que utiliza para solucionar problemas de memoria JVM?

Editar: Esto es cuando la aplicación se implementa dentro de Tomcat en modo de producción; No he probado con otros recipientes. Aun así, sería bueno tener algunos recursos para rastrear el problema.



Has probado

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

?

Junto con el aumento de los sospechosos habituales ( -Xmx , -Xms , -XX:PermSize y -XX:MaxPermSize ), esto resolvió todos los problemas de PermGen en nuestro Tomcat de producción, que ocurrió poco después de implementar la aplicación. Nunca he visto otra excepción de OOM después de eso. :-)


Personalmente me gusta VisualVM . Definitivamente hay herramientas más poderosas, pero esta tiene una buena relación de usabilidad a potencia.




YourKit es una buena herramienta que he usado varias veces para diagnosticar problemas de memoria. Es comercial, pero tiene una versión de evaluación gratuita disponible para la depuración de un solo disparo.