Find all java process in a host:
C:\Program Files\Java\jdk1.7.0_79\bin>jps -lv
6192 sun.tools.jps.Jps -Dapplication.home=C:\Program Files\Java\jdk1.7.0_79 -Xms8m
5348 C:\Desarrollo\eclipse-neon-2\\plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar -Dosgi.requiredJavaVersion=1.8 -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx2048m
3496 org.jboss.modules.Main -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:49626 -Dprogram.name=JBossTools: Red Hat JBoss EAP 6.1+ -Xms512m -Xmx1024m -XX:MaxPermSize=512m -Dorg.jboss.resolver.warning=true -Djava.net.preferIPv4Stack=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=C:/Servers/jboss-eap-6.2/standalone/log/boot.log -Dlogging.configuration=file:/C:/Servers/jboss-eap-6.2/standalone/configuration/logging.properties -Djboss.home.dir=C:/Servers/jboss-eap-6.2 -Dorg.jboss.logmanager.nocolor=true -Djboss.bind.address.management=localhost -Dfile.encoding=Cp1252
Print heap usage sumary:
C:\Program Files\Java\jdk1.7.0_79\bin>jmap -heap 3496
Attaching to process ID 3496, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.79-b02
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 1073741824 (1024.0MB)
NewSize = 1310720 (1.25MB)
MaxNewSize = 17592186044415 MB
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 21757952 (20.75MB)
MaxPermSize = 536870912 (512.0MB)
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 241172480 (230.0MB)
used = 101086072 (96.40319061279297MB)
free = 140086408 (133.59680938720703MB)
41.914430701214336% used
From Space:
capacity = 56623104 (54.0MB)
used = 0 (0.0MB)
free = 56623104 (54.0MB)
0.0% used
To Space:
capacity = 56623104 (54.0MB)
used = 0 (0.0MB)
free = 56623104 (54.0MB)
0.0% used
PS Old Generation
capacity = 358088704 (341.5MB)
used = 194474744 (185.46556854248047MB)
free = 163613960 (156.03443145751953MB)
54.30909766983323% used
PS Perm Generation
capacity = 296222720 (282.5MB)
used = 144879144 (138.16751861572266MB)
free = 151343576 (144.33248138427734MB)
48.90885614715846% used
44021 interned Strings occupying 5210120 bytes.
Print heap histogram:
C:\Program Files\Java\jdk1.7.0_79\bin>jmap -histo 3496
num #instances #bytes class name
----------------------------------------------
1: 105723 53508480 [B
2: 577164 46177512 [C
3: 245156 35415432 <constMethodKlass>
4: 245156 31391216 <methodKlass>
5: 25900 28928112 <constantPoolKlass>
6: 628395 25135800 java.util.LinkedHashMap$Entry
[...]
11430: 1 16 org.jboss.as.platform.mbean.ThreadMXBeanFindDeadlockedThreadsHandler
11431: 1 16 org.jboss.msc.service.ServiceContainerImpl$4
11432: 1 16 org.jboss.as.jmx.JMXExtension$JMXSubsystemParser_1_3
Total 8243462 503304768
Show JVM Information:
C:\Program Files\Java\jdk1.7.0_79\bin>jcmd 3496 help
3496:
The following commands are available:
VM.native_memory
VM.commercial_features
GC.rotate_log
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
Thread.print
GC.class_histogram
GC.heap_dump
GC.run_finalization
GC.run
VM.uptime
VM.flags
VM.system_properties
VM.command_line
VM.version
help
For more information about a specific command use 'help <command>'.
Print all JVM Threads:
C:\Program Files\Java\jdk1.7.0_79\bin>jcmd 3496 help Thread.print
3496:
Thread.print
Print all threads with stacktraces.
Impact: Medium: Depends on the number of threads.
Syntax : Thread.print [options]
Options: (options must be specified using the <key> or <key>=<value> syntax)
-l : [optional] print java.util.concurrent locks (BOOLEAN, false)
C:\Program Files\Java\jdk1.7.0_79\bin>jcmd 3496 Thread.print
[...]
Generate a Heap dump:
C:\Program Files\Java\jdk1.7.0_79\bin>jcmd 3496 help GC.heap_dump
3496:
GC.heap_dump
Generate a HPROF format dump of the Java heap.
Impact: High: Depends on Java heap size and content. Request a full GC unless the '-all' option is specified.
Syntax : GC.heap_dump [options] <filename>
Arguments:
filename : Name of the dump file (STRING, no default value)
Options: (options must be specified using the <key> or <key>=<value> syntax)
-all : [optional] Dump all objects, including unreachable objects (BOOLEAN, false)
C:\Program Files\Java\jdk1.7.0_79\bin>jcmd 3496 GC.heap_dump D:\tmp\test_jboss.hpprof
3496:
Heap dump file created
Important!! When you execute a heap dump, the JVM performs a garbage collector first. Therefore you will not get the heap´s snapshot, but a cleaner version.
Monitor Garbage Colector:
Program Files\Java\jdk1.7.0_79\bin>jstat -options
-cl
-compiler
-gc
-gccapacity
-gccause
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-printcompilation
C:\Program Files\Java\jdk1.7.0_79\bin>jstat -gcutil 3496 1000
S0 S1 E O P YGC YGCT FGC FGCT GCT
0,00 24,73 88,78 72,67 99,92 23 0,973 0 0,000 0,973
0,00 24,73 88,79 72,67 99,92 23 0,973 0 0,000 0,973
0,00 24,73 89,02 72,67 99,92 23 0,973 0 0,000 0,973