IBM: WebSphere and Their JVM
The IBM JVM

Troubleshooting
- JVM Logs at: install_root/profiles/profile_name/logs/server_name
- System.err = stack traces!
- native_stderr.log = garbage collection reports (when JVM is started-up with "-verbose:gc" option)
- IBM Service Log
- Binary need their tool (Log and Trace Analyzer) to view
Garbage Collection
IBM Diagnostic Guide 1.4.2 -- Understanding the Garbage Collector — helpful tips, parameters, etc. specific to the IBM JVM
Overview
- Object Allocation
- There's a heap lock to prevent concurrent modification of the heap allocation tables.
- Individual threads are allocated "cache" (aka Thread Local Heap or "TLH") from which they are guaranteed to not contend with other threads. This is for allocating small (<512 bytes) objects.
- Then there's the Large Object Area (LOA); a section of the Heap reserved for allocating large (> 64Kbytes) objects.
- Garbage Collection
Policies
- optthruput (default) — maximize throughput (longer GC times but more thorough); use until pause times get too long. This option disables "concurrent mark"
- optavgpause — minimize average pause time by enabling "concurrent mark"
Interpreting Logs
- OutOfMemoryError
- "Insufficient heap space to satisfy allocation request" when the error occurs because not enough heap
- (class loading memory space; see this if you reload WARs repeatedly)
native_stderr.log
On start-up, log looks like this:
[ JVMST080: verbosegc is enabled ]
[ JVMST082: -verbose:gc output will be written to stderr ]
<GC[0]: Expanded System Heap by 65536 bytes
<GC[0]: Expanded System Heap by 65536 bytes
<GC[0]: Expanded System Heap by 65536 bytes
<GC[0]: Expanded System Heap by 65536 bytes
<GC[0]: Expanded System Heap by 65536 bytes
<GC[0]: Expanded System Heap by 65536 bytes
<GC[0]: Expanded System Heap by 65536 bytes
<GC[0]: Expanded System Heap by 65536 bytes
<GC[0]: Expanded System Heap by 65536 bytes
A typical garbage collection looks like this:
<AF[1]: Allocation Failure. need 2072 bytes, 0 ms since last AF>
<AF[1]: managing allocation failure, action=1 (0/255012224) (13421696/13421696)>
<GC(1): freeing class com.ibm.ws.rsadapter.jdbc.WSJccPreparedStatement(70380520)>
<GC(1): unloaded and freed 1 class>
<GC(1): GC cycle started Tue Oct 23 07:04:50 2007
<GC(1): freed 189599024 bytes, 75% free (203020720/268433920), in 210 ms>
<GC(1): mark: 87 ms, sweep: 18 ms, compact: 105 ms>
<GC(1): refs: soft 0 (age >= 32), weak 72, final 1229, phantom 14>
<GC(1): moved 68544 objects, 4950536 bytes, IC reason=13>
<AF[1]: completed in 213 ms>
<GC[1]: Expanded System Heap by 65536 bytes
Core dump requests and report of output are here:
JVMDG217: Dump Handler is Processing Signal 3 - Please Wait.
JVMDG303: JVM Requesting Java core file
JVMDG304: Java core file written to /usr/WebSphere/AppServer/profiles/AppSrv01/javacore28306.1193139812.txt
JVMDG215: Dump Handler has Processed Dump Signal 3.
Rational Application Developer (RAD)
Tacit Migration Operation
Sometimes the IDE will hang while doing "Tacit Migration Operation". No, it's not a trojan horse developed by TK, it's a bug. If this happens, try this:
Window-> Preferences -> Workbench-> Startup and Shutdown -> Disable "Compatibility Engine Startup Hook"
(reference: http://forums.systeminetwork.com/isnetforums/showthread.php?t=48945 and http://archive.midrange.com/wdsci-l/200606/msg00107.html)
WebSphere Transaction Management
- RMLT
- Resource Manager Local Transaction
Local Transaction Containment
- resolution-control — who decides how to resolve an unresolved transaction.
- Must be "Application" before an app can touch the autocommit attribute of a connection.
Helpful Links
page revision: 22, last edited: 28 Jan 2009 20:58