2010-09-24 21 views

Respuesta

-1

Parece que lo que busca es un generador de perfiles. (por ejemplo, jProfiler o para código abierto: http://java-source.net/open-source/profilers)

+0

Gracias, no puedo encontrar esta opción en jprofiler – alex543

+2

Podría apuntar a cualquier generador de perfiles que tenga una opción para explorar el espacio de perm gen. Por lo que aprendo, la mayoría de ellos solo explora el montón, no el espacio de la memoria permanente. –

10

Tal vez tenga una base de código grande o esté internando muchas cadenas.

Trate jmap:

jmap -permstat <pid> 

(Nota: la opción permstat no está disponible en Windows)

Ejemplo:

$ jmap -permstat 22982 
Attaching to process ID 22982, please wait... 
Debugger attached successfully. 
Server compiler detected. 
JVM version is 17.0-b16 
100691 intern Strings occupying 5641096 bytes. 
finding class loader instances ..Finding object size using Printezis bits and skipping over... 
done. 
computing per loader stat ..done. 
please wait.. computing liveness..done. 
class_loader classes bytes parent_loader alive? type 

<bootstrap>  303  1355992 null   live <internal> 
0xdd159fe8  9  94104 0xdd153c30  live sun/misc/[email protected] 
0xdd153c30  0  0   null   live sun/misc/[email protected] 

total = 3  312  1450096  N/A   alive=3, dead=0  N/A 

También puede intentar volcar el montón en un archivo y luego, cárguelo en Eclipse Memory Analyser, que le proporcionará información útil, como un Informe de sospecha de fuga y Dominator Tree.

jmap -dump:format=b,file=heap.bin 22982 

Si es necesario, puede aumentar su espacio de PermGen mediante la opción -XX:MaxPermSize JVM.

+1

La opción 'permstat' ya está disponible en Windows. Versión de Java "1.6.0_31" Java (TM) SE Runtime Environment (compilación 1.6.0_31-b05) Java HotSpot (TM) Servidor de 64 bits VM (compilación 20.6-b01, modo mixto) – Sydney

Cuestiones relacionadas