Por ejemplo, para obtener las jvm de la máquina hacemos:
emilio@silencio:~$ /opt/java5/bin/jpsDespués, la traza de los hilos:
21910 Jps
21801 Bootstrap
emilio@silencio:~$ /opt/java5/bin/jstack 21801con el que, al menos, podremos atacar el problema con más conocimiento...
Attaching to process ID 21801, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.5.0_08-b03
Thread 21949: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Interpreted frame)
- org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable.run() @bci=10, line=559 (Interpreted frame)
- java.lang.Thread.run() @bci=11, line=595 (Interpreted frame)
Por último, jugamos con la memoria, de más o menos interés dependiendo de las necesidades, generación permanente:
emilio@silencio:~$ /opt/java5/bin/jmap -permstat 21801
Attaching to process ID 21801, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.5.0_08-b03
finding class loader instances ..Unknown oop at 0x9d385848
Oop's klass is null
done.
computing per loader stat ..done.
please wait.. computing liveness.................................................................done.
class_loader classes bytes parent_loader alive? type1211 2771016 null live
0x9f1d9a38 1 1408 0x9efec8e0 dead sun/reflect/DelegatingClassLoader@0xad392da0
0x9f1ace08 1 1424 0x9efec8e0 dead sun/reflect/DelegatingClassLoader@0xad392da0
0x9f061d58 1 1408 0x9efec8e0 dead sun/reflect/DelegatingClassLoader@0xad392da0
0x9f8773e0 58 172472 0x9effbcf8 live org/apache/catalina/loader/WebappClassLoader@0xad9d8da0
emilio@silencio:~$ /opt/jdk1.5.0_08/bin/jmap -histo 21801y el resumen:
Attaching to process ID 21801, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.5.0_08-b03
Iterating over heap. This may take a while...
Unknown oop at 0x9d355648
Oop's klass is null
Object Histogram:
Size Count Class description
-------------------------------------------------------
5527864 44548 * ConstMethodKlass
3520376 43933 char[]
3210464 44548 * MethodKlass
2764288 67280 * SymbolKlass
2216472 4001 * ConstantPoolKlass
1657864 4774 byte[]
1640944 4001 * InstanceKlassKlass
1325072 3614 * ConstantPoolCacheKlass
1225368 51057 java.lang.String
690320 8629 java.lang.reflect.Method
685512 9521 java.lang.reflect.Field
655104 5685 int[]
428448 4463 java.lang.Class
405936 16914 java.util.HashMap$Entry
emilio@silencio:~$ /opt/jdk1.5.0_08/bin/jmap -heap 21801
Attaching to process ID 21801, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.5.0_08-b03
using thread-local object allocation.
Mark Sweep Compact GC
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 268435456 (256.0MB)
NewSize = 655360 (0.625MB)
MaxNewSize = 4294901760 (4095.9375MB)
OldSize = 1441792 (1.375MB)
NewRatio = 8
SurvivorRatio = 8
PermSize = 16777216 (16.0MB)
MaxPermSize = 67108864 (64.0MB)
Heap Usage:
New Generation (Eden + 1 Survivor Space):
capacity = 1245184 (1.1875MB)
used = 666696 (0.6358108520507812MB)
free = 578488 (0.5516891479492188MB)
53.54196648848684% used
Eden Space:
capacity = 1114112 (1.0625MB)
used = 638656 (0.60906982421875MB)
free = 475456 (0.45343017578125MB)
57.32421875% used
From Space:
capacity = 131072 (0.125MB)
used = 28040 (0.02674102783203125MB)
free = 103032 (0.09825897216796875MB)
21.392822265625% used
To Space:
capacity = 131072 (0.125MB)
used = 0 (0.0MB)
free = 131072 (0.125MB)
0.0% used
tenured generation:
capacity = 10674176 (10.1796875MB)
used = 10395440 (9.913864135742188MB)
free = 278736 (0.2658233642578125MB)
97.38868836339218% used
Perm Generation:
capacity = 20447232 (19.5MB)
used = 20255184 (19.316848754882812MB)
free = 192048 (0.1831512451171875MB)
99.06076284555289% used
Desde Java 6 podemos hacer cosas más interesantes con jmap + herramientas como visualvm... pero esa es otra historia.
No hay comentarios:
Publicar un comentario