JRockit jrcmd command is very useful for debugging issues i nthe JVM
usage:
jrcmd
the processid is 5176 here in this example
jrcmd 5176 help
The following commands are available:
kill_management_server
start_management_server
print_object_summary
memleakserver
print_class_summary
print_codeblocks
dump_codelayout
dump_codelist
dump_codemap
print_codegenlist
print_vm_state
print_utf8pool
check_flightrecording
dump_flightrecording
stop_flightrecording
start_flightrecording
print_properties
hprofdump
print_threads
datadump_request
runsystemgc
runfinalization
heap_diagnostics
oom_diagnostics
print_exceptions
version
timestamp
command_line
sanity
verbosity
set_filename
help
print_memusage
set_vmflag
list_vmflags
For more information about a specific command use 'help <command>'.
Parameters to commands are optional unless otherwise stated.
jrcmd 5176 print_object_summary
5176:
--------- Detailed Heap Statistics: ---------
43.4% 3565k 33273 +3565k [C
9.8% 802k 34241 +802k java/lang/String
7.9% 645k 5906 +645k java/lang/Class
5.1% 419k 1447 +419k [I
3.9% 316k 13498 +316k java/util/HashMap$Entry
...
8206kB total ---
--------- End of Detailed Heap Statistics ---
jrcmd 5176 print_class_summary
5176:
- Class Summary Information starts here
class java/lang/Object
*class jrockit/vm/Memset
*class jrockit/vm/StringMaker
*class org/eclipse/swt/internal/win32/GCP_RESULTS
*class org/eclipse/swt/internal/win32/SCRIPT_FONTPROPERTIES
*class org/eclipse/swt/internal/win32/EXTLOGFONTW
*class org/eclipse/swt/graphics/TextLayout$1$MetaFileEnumProc
.....
jrcmd 5176 print_codeblocks
5176:
Codeblock type=0 start= 0x04750000 end=0x04760000 top=0x04750540 freelist=0
Codeblock type=2 start= 0x04770000 end=0x04790000 top=0x0478FFA3 freelist=4264
Codeblock type=2 start= 0x04DD0000 end=0x04DF0000 top=0x04DEFFEB freelist=421
Codeblock type=2 start= 0x05170000 end=0x05190000 top=0x0518FFF0 freelist=466
....
jrcmd 5176 print_codegenlist
5176:
JIT queue length: 0
Opt queue length: 0
jrcmd 5176 print_vm_state
</pre>
CPU : Intel Core 2 SSE SSE2 SSE3 SSSE3 Core Intel64
Number CPUs : 2
Tot Phys Mem : 2136891392 (2037 MB)
OS version : Microsoft Windows XP version 5.1 Service Pack 3 (Build 2600) (32-bit)
Thread System: Windows Threads
Java locking : Lazy unlocking enabled (class banning) (transfer banning)
State : JVM is running
Command Line : -Denv.class.path=.;C:\Program Files\Java\jre6\lib\ext\QTJava.zip -Dapplication.home=C:\Program Files\Java\jrockit-jdk1.6.0_20-R28.1.0-4.0.1 -client -Dsun.java.launcher=SUN_STANDARD com.jrockit.mc.rcp.start.MCMain
...
GC Strategy : Mode: pausetime, with strategy: singleconcon (basic strategy: singleconcon)
GC Status : OC is not running. Last finished OC was OC#41.
Heap : 0x10040000 - 0x12E78000 (Size: 46 MB)
Heap History : OC#14 - 0x11040000 (16 MB -> 19 MB; +3280 KB)
: OC#18 - 0x11374000 (19 MB -> 24 MB; +4400 KB)
: OC#21 - 0x117C0000 (24 MB -> 27 MB; +3320 KB)
: OC#26 - 0x11AFE000 (27 MB -> 32 MB; +5480 KB)
: OC#27 - 0x12058000 (32 MB -> 39 MB; +6576 KB)
: OC#28 - 0x126C4000 (39 MB -> 46 MB; +7888 KB)
Compaction : (no compaction area)
Allocation : TLA-min: 2048, TLA-preferred: 16384 TLA-waste limit: 2048
CompRefs : References are 32-bit.
Loaded modules:
00400000-0043afff C:\Program Files\Java\jrockit-jdk1.6.0_20-R28.1.0-4.0.1\bin\jrmc.exe
7c900000-7c9b1fff C:\WINDOWS\system32\ntdll.dll
....
jrcmd 5176 print_properties
5176:
=== Initial Java properties: ===
java.vm.specification.name=Java Virtual Machine Specification
java.vm.vendor.url.bug=http://download.oracle.com/docs/cd/E15289_01/go2troubleshooting.html
java.home=C:\Program Files\Java\jrockit-jdk1.6.0_20-R28.1.0-4.0.1\jre
java.vm.vendor.url=http://www.oracle.com/
java.vm.specification.version=1.0
java.vm.info=compiled mode
=== End Initial Java properties ===
=== VM properties: ===
jrockit.vm=C:\Program Files\Java\jrockit-jdk1.6.0_20-R28.1.0-4.0.1\jre\bin\jrockit\jvm.dll
jrockit.vm.dir=C:\Program Files\Java\jrockit-jdk1.6.0_20-R28.1.0-4.0.1\jre\bin\jrockit
=== End VM properties ===
=== Current Java properties: ===
Could not find fields=== End Current Java properties ===
jrcmd 5176 print_threads
5176:
===== FULL THREAD DUMP ===============
Thu Jan 27 11:27:48 2011
Oracle JRockit(R) R28.1.0-123-138454-1.6.0_20-20101014-1351-windows-ia32
"Main Thread" id=1 idx=0x4 tid=3836 prio=6 alive, in native
at org/eclipse/swt/internal/win32/OS.WaitMessage()Z(Native Method)
at org/eclipse/swt/widgets/Display.sleep(Display.java:4281)
...
-- end of trace
"(Signal Handler)" id=2 idx=0x8 tid=4692 prio=5 alive, native_blocked, daemon
"(OC Main Thread)" id=3 idx=0xc tid=3512 prio=5 alive, native_waiting, daemon
..
-- end of trace
"Reference Handler" id=9 idx=0x2c tid=5472 prio=10 alive, native_waiting, daemon
at java/lang/ref/Reference.waitForActivatedQueue(J)Ljava/lang/ref/Reference;(Native Method)
..
-- end of trace
"(Sensor Event Thread)" id=10 idx=0x30 tid=2724 prio=5 alive, native_blocked, daemon
"VM JFR Buffer Thread" id=11 idx=0x34 tid=5912 prio=5 alive, in native, daemon
"State Data Manager" id=13 idx=0x38 tid=5732 prio=5 alive, sleeping, native_waiting, daemon
..
-- end of trace
"Start Level Event Dispatcher" id=14 idx=0x3c tid=5644 prio=5 alive, waiting, native_blocked, daemon
-- Waiting for notification on: org/eclipse/osgi/framework/eventmgr/EventManager$EventThread@0x107D7B48[fat lock]
..
-- end of trace
"Framework Event Dispatcher" id=15 idx=0x40 tid=4640 prio=5 alive, waiting, native_blocked, daemon
-- Waiting for notification on: org/eclipse/osgi/framework/eventmgr/EventManager$EventThread@0x10E1A6D0[fat lock]
...
-- end of trace
"[RJMX] JDP Client" id=17 idx=0x44 tid=5596 prio=5 alive, in native
at java/net/PlainDatagramSocketImpl.receive0(Ljava/net/DatagramPacket;)V(Native Method)
^-- Holding lock: java/net/PlainDatagramSocketImpl@0x10988A80[recursive]
..
-- end of trace
"Java2D Disposer" id=19 idx=0x4c tid=4352 prio=10 alive, waiting, native_blocked, daemon
-- Waiting for notification on: java/lang/ref/ReferenceQueue$Lock@0x10D0EB30[fat lock]
..
-- end of trace
"AWT-Windows" id=21 idx=0x54 tid=3088 prio=6 alive, in native, daemon
at sun/awt/windows/WToolkit.eventLoop()V(Native Method)
..
-- end of trace
"JMAPI event thread" id=27 idx=0x68 tid=5232 prio=5 alive, in native, daemon
"JFR request timer" id=28 idx=0x6c tid=6056 prio=6 alive, waiting, native_blocked, daemon
-- Waiting for notification on: java/util/TaskQueue@0x1008DCE0[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
...
-- end of trace
"Worker-0" id=30 idx=0x70 tid=252 prio=5 alive, waiting, native_blocked
-- Waiting for notification on: org/eclipse/core/internal/jobs/WorkerPool@0x10DD48A0[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
...
-- end of trace
"Local Descriptor Scanner" id=31 idx=0x74 tid=2280 prio=6 alive, sleeping, native_waiting
at java/lang/Thread.sleep(J)V(Native Method)
..
"JDP Stale Descriptor Detector" id=32 idx=0x78 tid=4788 prio=6 alive, sleeping, native_waiting
at java/lang/Thread.sleep(J)V(Native Method)
..
-- end of trace
===== END OF THREAD DUMP ===============
jrcmd 5176 heap_diagnostics
5176:
Invoked from diagnosticcommand
======== BEGIN OF HEAPDIAGNOSTIC =========================
Total memory in system: 2136891392 bytes
Available physical memory in system: 179638272 bytes
-Xmx (maximal heap size) is 1073741824 bytes
Heapsize: 48463872 bytes
Free heap-memory: 19064600 bytes
--------- Detailed Heap Statistics: ---------
44.3% 3375k 30871 -190k [C
9.8% 745k 31818 -56k java/lang/String
8.5% 645k 5906 +0k java/lang/Class
5.5% 417k 1378 -1k [I
3.8% 292k 237 +0k [B
3.6% 272k 11637 -43k java/util/HashMap$Entry
2.4% 179k 2234 -21k [Ljava/util/HashMap$Entry;
2.3% 171k 2585 -8k [Ljava/lang/Object;
1.4% 103k 2213 -27k java/util/HashMap
1.0% 72k 3114 +0k java/util/Hashtable$Entry
.....
7619kB total ---
--------- End of Detailed Heap Statistics ---
----- Reference Objects statistics separated per class -----
Total Reach Act PrevAct Null
----- ----- --- ------- ----
Soft References:
1456 60 0 971 425 Total for all Soft References
org/eclipse/core/internal/registry/ReferenceMap$SoftRef =>
974 12 0 962 0 Total
962 0 0 962 0 => null
12 12 0 0 0 => org/eclipse/osgi/framework/internal/core/BundleHost
java/lang/ref/SoftReference =>
430 5 0 0 425 Total
425 0 0 0 425 => null
2 2 0 0 0 => [Ljava/lang/reflect/Constructor;
1 1 0 0 0 => org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader
1 1 0 0 0 => java/util/jar/Manifest
1 1 0 0 0 => java/lang/StringCoding$StringDecoder
java/util/ResourceBundle$BundleReference =>
48 40 0 8 0 Total
29 29 0 0 0 => java/util/ResourceBundle$1
11 11 0 0 0 => java/util/PropertyResourceBundle
8 0 0 8 0 => null
sun/security/util/MemoryCache$SoftCacheEntry =>
3 3 0 0 0 Total
3 3 0 0 0 => sun/security/x509/X509CertImpl
sun/misc/SoftCache$ValueCell =>
1 0 0 1 0 Total
1 0 0 1 0 => null
Weak References:
2982 2614 0 173 195 Total for all Weak References
java/lang/ref/WeakReference =>
1705 1510 0 0 195 Total
796 796 0 0 0 => java/lang/String
327 327 0 0 0 => java/lang/Class
....
java/util/WeakHashMap$Entry =>
1130 958 0 172 0 Total
796 796 0 0 0 => java/lang/String
172 0 0 172 0 => null
..
java/util/ResourceBundle$LoaderReference =>
48 48 0 0 0 Total
39 39 0 0 0 => org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader
9 9 0 0 0 => java/util/ResourceBundle$RBClassLoader
java/lang/ThreadLocal$ThreadLocalMap$Entry =>
38 38 0 0 0 Total
20 20 0 0 0 => java/lang/ThreadLocal
11 11 0 0 0 => java/lang/InheritableThreadLocal
4 4 0 0 0 => org/eclipse/ui/internal/UISynchronizer$2
2 2 0 0 0 => sun/misc/FloatingDecimal$1
1 1 0 0 0 => org/eclipse/ui/internal/UISynchronizer$1
org/eclipse/core/internal/runtime/ReferenceHashSet$HashableWeakReference =>
35 35 0 0 0 Total
12 12 0 0 0 => org/eclipse/ui/internal/registry/ViewDescriptor
6 6 0 0 0 => org/eclipse/ui/internal/registry/ActionSetDescriptor
...
com/sun/jmx/mbeanserver/WeakIdentityHashMap$IdentityWeakReference =>
15 15 0 0 0 Total
3 3 0 0 0 => sun/management/MemoryPoolImpl
2 2 0 0 0 => sun/management/GarbageCollectorImpl
1 1 0 0 0 => sun/management/RuntimeImpl
...
com/sun/java/swing/plaf/windows/DesktopProperty$WeakPCL =>
6 6 0 0 0 Total
4 4 0 0 0 => com/sun/java/swing/plaf/windows/WindowsLookAndFeel$TriggerDesktopProperty
1 1 0 0 0 => com/sun/java/swing/plaf/windows/WindowsLookAndFeel$FontDesktopProperty
1 1 0 0 0 => com/sun/java/swing/plaf/windows/WindowsLookAndFeel$WindowsFontProperty
sun/nio/ch/FileChannelImpl$FileLockReference =>
4 4 0 0 0 Total
4 4 0 0 0 => sun/nio/ch/FileLockImpl
javax/swing/plaf/metal/MetalLookAndFeel$AATextListener =>
1 0 0 1 0 Total
1 0 0 1 0 => null
Phantom References:
2 2 0 0 0 Total for all Phantom References
java/lang/ref/PhantomReference =>
2 2 0 0 0 Total
2 2 0 0 0 => java/lang/Object
Cleared Phantom:
8 8 0 0 0 Total for all Cleared Phantom
jrockit/vm/ObjectMonitor =>
8 8 0 0 0 Total
2 2 0 0 0 => org/eclipse/osgi/framework/eventmgr/EventManager$EventThread
1 1 0 0 0 => org/eclipse/core/internal/jobs/WorkerPool
...
Finalizers:
161 161 0 0 0 Total for all Finalizers
68 68 0 0 0 => java/util/zip/ZipFile
44 44 0 0 0 => java/util/zip/Inflater
...
Weak Handles:
8311 8311 0 0 0 Total for all Weak Handles
6052 6052 0 0 0 => org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader
1397 1397 0 0 0 => java/lang/String
594 594 0 0 0 => org/eclipse/equinox/launcher/Main$StartupClassLoader
..
Soft reachable referents not used for at least 201.708 s cleared.
3 SoftReferences was soft alive but not reachable (when found by the GC),
0 was both soft alive and reachable, and 1453 was not soft alive.
----- End of Reference Objects statistics -----
Dark matter: 509525593 bytes
Heap size is not locked
======== END OF HEAPDIAGNOSTIC ===========================
jrcmd 5176 oom_diagnostics
similar to heap diagnostics
jrcmd 5176 version
5176:
Oracle JRockit(R) build R28.1.0-123-138454-1.6.0_20-20101014-1351-windows-ia32, compiled mode
GC mode: Garbage collection optimized for short pausetimes, strategy: singleconcon
jrcmd 5176 print_memusage
5176:
Total mapped 1242224KB (reserved=1074256KB)
- Java heap 1048576KB (reserved=1001248KB)
- GC tables 35084KB
- Thread stacks 10752KB (#threads=24)
- Compiled code 3968KB (used=3812KB)
- Internal 968KB
- OS 43488KB
- Other 70588KB
- Java class data 27776KB (malloced=27745KB #32965 in 5906 classes)
- Native memory tracking 1024KB (malloced=361KB #8)
jrcmd 5176 print_vmflags
5176:
Global:
UnlockDiagnosticVMOptions = false (default, writeable)
UnlockInternalVMOptions = false (default)
Class:
FailOverToOldVerifier = true (default, writeable)
UseVerifierClassCache = true (default)
UseClassGC = true (default)
Threads:
UseThreadPriorities = false (default)
DeferThrSuspendLoopCount = 4000 (default, writeable)
SafepointSpinBeforeYield = 2000 (default, writeable)
UseCompilerSafepoints = true (default)
DeferPollingPageLoopCount = -1 (default)
UseMembarForTransitions = false (default)
UseNativeLockProfiling = false (default)
JNI:
CheckJNICalls = false (default)
AbortOnFailedJNICheck = true (default)
ErrorOnFailedJNICheck = false (default)
JDK:
UseNewHashFunction = false (default)
TreeMapNodeSize = 64 (default)
MaxDirectMemorySize = 0 (default)
UseLazyStackTraces = true (default)
ShowInternalMethodsInStackTrace = false (default, writeable)
OS:
ReduceSignalUsage = false (default)
MaxRecvBufferSize = 65536 (default)
MaxLargePageSize = 0 (default)
GC:
UseLowAddressForHeap = true (default)
UseLargePagesForHeap = false (default)
ForceLargePagesForHeap = false (default)
CompressedRefs = false (default)
InitialHeapSize = 0 (default)
MaxHeapSize = 0 (default)
GCTimeRatio = 19 (default)
GCTimePercentage = 0.000000 (default)
GCTrigger = 0 (default)
ForceEarlyOC = true (default)
ForceEarlyOCMaxPercentage = 5.000000 (default)
ForceYCOnLargeAllocationFailed = false (default)
UseNurseryEvacuation = false (default)
DisableEvacuationToNursery = false (default)
SemiRefPostponedPacketSize = 492 (default)
SemiRefPrefetchDistance = 0 (default)
FinalHandleParallelThreshold = 800 (default)
FinalHandlePacketSize = 200 (default)
MaximumNurseryPercentage = 95 (default)
AllowYCDuringOC = true (default)
YcAlignAll = false (default)
YcAlignMaxSpill = 40 (default)
FullSystemGC = false (default)
AllowSystemGC = true (default)
GcCardTableParts = 1024 (default)
GcBalancePrefetchDistance = 4 (default)
GcBalancePacketSize = 493 (default)
NumGenConPrecleaningIterations = 3 (default)
AllowEmergencyParSweep = true (default)
TlaWasteLimit = 2K (set by runtime)
TlaMinSize = 2K (set by runtime)
TlaPreferredSize = 16K (set by runtime)
GC::Compaction:
UseFullCompaction = false (default)
InternalCompactionPercentage = -1.000000 (default)
ExternalCompactionPercentage = -1.000000 (default)
InitialCompactionPercentage = -1.000000 (default)
UseCompaction = true (default)
UseAbortableCompaction = false (default)
NumCompactionHeapParts = 4096 (default)
InitialExternalReservedHeap = 4M (default)
UseFixedExternalReservedHeap = false (default)
MaxCompactionReferences = 0 (default)
MaxCompactionReferencesPerObject = 0 (default)
InternalCompactionParts = -1 (default)
ExternalCompactionParts = -1 (default)
Object allocation:
UseAllocPrefetch = true (default)
RedoAllocPrefetch = true (default)
AllocPrefetchLineLength = 64 (default)
AllocPrefetchDistance = 448 (default)
AllocChunkSize = 512 (default)
Javalock:
UseLockProfiling = false (default)
ThinLockContendedSpinCount = 65 (default)
ThinLockContendedPollCount = 50 (default)
ThinLockConvertToFatThreshold = 240 (default)
FatLockContendedSpinCount = 65 (default)
FatLockContendedPollCount = 50 (default)
MonitorContendedSpinCount = 50 (default)
MonitorContendedPollCount = 20 (default)
UseFatLockDeflation = true (default)
FatLockDeflationThreshold = 50 (default)
UseLockQueueLength = true (default)
UseFatSpin = true (default)
UseAdaptiveFatSpin = false (default)
UseThreadContentionMonitoring = true (default)
JavaLock::LazyUnlocking:
UseLazyUnlocking = true (default)
UseLazyUnlockingInJIT = true (default)
UseLazyUnlockingClassBan = true (default)
UseLazyUnlockingTransferClassBan = true (default)
JFR:
FlightRecorder = true (default)
FlightRecorderOptions = (null) (default)
StartFlightRecording = (null) (default)
Code memory:
CodeBlockAbsorbtionSize = 16 (default)
FreeEmptyCodeBlocks = true (default)
UseLargePagesForCode = false (default)
MaxCodeMemory = 0 (default)
ReserveCodeMemory = false (default)
UseCodeGC = true (default)
CodeGCThreshold = 0 (default)
CodeGCReclaimThreshold = 0 (default)
CodeGCUseReclaim = true (default)
Compiler broker:
MaxOptQueueLength = 0 (default)
OptThreads = 1 (default)
JITThreads = 1 (default)
JITThreadPrio = 5 (default)
OptThreadPrio = 5 (default)
DisableOptsAfter = -1 (default)
Compiler:
PreOpt = false (default)
UseCallProfiling = false (default)
StrictFP = false (default)
CheckStacks = false (default)
DevirtualizeAlways = false (default)
UseStringCache = false (default)
MethodCodeAlignment = 32 (default)
UseInlineObjectAlloc = true (default)
UseOldLockMatching = false (default)
JVMTI:
JavaDebug = false (default)
Management:
DisableAttachMechanism = false (default)
CrashOnOutOfMemoryError = false (default, writeable)
ExitOnOutOfMemoryError = false (default, writeable)
ExitOnOutOfMemoryErrorExitCode = 51 (default, writeable)
HeapDiagnosticsOnOutOfMemoryError = false (default, writeable)
HeapDiagnosticsPath = (null) (default, writeable)
HeapDumpOnOutOfMemoryError = false (default, writeable)
HeapDumpOnCtrlBreak = false (default)
HeapDumpPath = (null) (default, writeable)
SegmentedHeapDumpThreshold = 2G (default, writeable)
HeapDumpSegmentSize = 1G (default)
StartMemleakOnPort = 0 (default, writeable)
FlightRecordingDumpOnUnhandledException = false (default, writeable)
FlightRecordingDumpPath = (null) (default, writeable)
Runtime:
AbortOnCrash = false (default, writeable)
DumpOnCrash = true (default, writeable)
CoreOnCrash = true (default, writeable)
WaitOnCrash = false (default, writeable)
AbortOnAssert = true (default, writeable)
CrashOnAssert = false (default, writeable)
WaitOnAssert = false (default, writeable)
NumaMemoryPolicy = (null) (default)
BindToNumaNodes = (null) (default)
BindToCPUs = (null) (default)
UseFastTime = true (default)
UseJNIPinning = true (default)