outofmemoryerror maxpermsize java permgen

java - outofmemoryerror - maxpermsize



¿Cómo analizar los contenidos de PermGen? (4)

Quiero obtener un vertedero del PermGen para ver por qué se está llenando. ¿Hay alguna forma de analizar esto? Ya sé sobre los sospechosos comunes como log4j, la recarga de webapp de tomcat, etc., pero también tengo un código de generación proxy personalizado en mi aplicación, y solo quiero mirar debajo del capó.

¿Es esto posible de alguna manera?



Puedes usar las banderas:

-XX:+TraceClassLoading -XX:+TraceClassUnloading

Imprimen las identidades de las clases a medida que se cargan / descargan de la generación permanente. Si agrega -XX:+PrintGCDetails también puede rastrear el tamaño del permgen.

Tenga en cuenta que no estoy seguro de que las banderas sean compatibles con JVM que no sean de Sun.

Otro sospechoso de errores de memoria extra de PermGen es el interrogatorio de cadenas . Compruebe los lugares donde interne cadenas en su código.


Si está buscando obtener una lista de todas las clases cargadas, puede usar jconsole . Haga clic en la pestaña de clases y luego haga clic en "Verbose Output". Eso imprimirá cada clase que está cargada en stdout . Encontré esto muy útil rastreando un problema de clase de proxy JAXB.

Es posible que deba iniciar su aplicación con la opción de línea de comando -Dcom.sun.management.jmxremote para que jconsole pueda conectar a ella.