|
Problem(Abstract) |
Steps you can take to prevent a Just-In-Time (JIT)
compiler crash by identifying the method in which the JIT library is
crashing. This is applicable to IBM® Java™ developer kits only. |
|
|
|
Resolving the
problem |
If you determine that the Java virtual machine (JVM) crash
you are experiencing is caused by a crash in the JIT library, and you are
unable to determine the cause, try the following actions:
- Expand Servers on the administrative console.
- Click Application Servers, then click the application server
that is experiencing the JVM crash.
- Click Process Definition, then Environment Entries.
- Click New and add JITC_COMPILEOPT=COMPILING as a new
environment variable.
- Click OK or Apply to save the setting.
- Stop and restart the application server.
With JITC_COMPILING set to
COMPILING, information similar to the following is logged in
native_stderr.log file for the application server, indicating
that a class or method is being compiled: |
|
Compiling
{com/ibm/mq/jms/MQMessageReference}{setJMSMessage}
0x184DE9CC
{com/ibm/mq/jms/MQMessageReference}{setJMSMessage}
Compiling
{com/ibm/ejs/util/cache/BackgroundLruEvictionStrategy}{alarm}
0x184E1074
{com/ibm/ejs/util/cache/BackgroundLruEvictionStrategy}{alarm}
Compiling {com/ibm/mq/MQMsg2}{writeToWithoutConversion}
0x184DF1F4
{com/ibm/mq/MQMsg2}{writeToWithoutConversion} |
 |
- Identify the failing class and method, then look at one of the
previous five or six class methods prior to the JVM crash.
- Skip the last five methods listed in the stderr file. Note that for
each method that is JIT-compiled, two lines are present in the stderr
output.
For example:
Compiling
{com/ibm/mq/MQMsg2}{writeToWithoutConversion}
0x184DF1F4 {com/ibm/mq/MQMsg2}{writeToWithoutConversion} |
|
Skipping methods on Windows® systems
The separator to use between the Java-compile option keywords COMPILING
and SKIP is the path separator character for the operating system. For
Windows systems, this separator is a semi-colon ( ; ). Set the
value of the JITC_COMPILEOPT variable to
COMPILING;SKIP{directory/className}{methodName} |
|
To skip the last three methods in the sample output listed previously,
change the value of the JITC_COMPILEOPT variable to :
COMPILING;SKIP
{com/ibm/mq/MQMsg2}{writeToWithoutConversion}{com/ibm/ejs/util/cache/BackgroundLruEvictionStrategy}{alarm}{com/ibm/mq/jms/MQMessageReference}{setJMSMessage} |
|
Skipping methods on UNIX® systems
The separator to use between the keywords COMPILING and
SKIP is the path separator character for the operating system.
For UNIX operating systems, such as AIX® and Linux®, the path separator is
":". For UNIX operating systems, change the value of the
JITC_COMPILEOPT variable to:
COMPILING:SKIP{directory/className}{methodName} |
|
To skip the last three methods in the sample output listed previously,
change the value of the JITC_COMPILEOPT variable to:
COMPILING:SKIP
{com/ibm/mq/MQMsg2}{writeToWithoutConversion}{com/ibm/ejs/util/cache/BackgroundLruEvictionStrategy}{alarm}{com/ibm/mq/jms/MQMessageReference}{setJMSMessage} |
|
This change causes the JIT compiler to skip JIT compiling for the named
methods. Wildcards are supported in the value. You can replace methodName
with * to skip all methods for a class.
The value for JITC_COMPILEOPT must not contain spaces.
To skip more than one method, you can add class and method names to the
list of methods to skip. Use no spaces or separator characters between
names. |
|
|
|
|
Cross Reference information |
Segment |
Product |
Component |
Platform |
Version |
Edition |
Application Servers |
WebSphere Application Server for z/OS |
Not Applicable |
|
|
|
Application Servers |
Runtimes for Java Technology |
Java SDK |
|
|
|
|
|
|