Java virtual machine settings

Use this page to view, and change the Java virtual machine (JVM) configuration settings of a process for an application server.

To view this administrative console page, connect to the administrative console and navigate to the Java virtual machine panel.

[IBM i] For IBM i and distributed platforms, follow one of the following paths.
Information Value
Application server Servers > Server Types > WebSphere application servers > server_name. Then, in the Server Infrastructure section, click Java and process management > Process definition > Java virtual machine
Deployment manager System Administration > Deployment manager. Then, in the Server Infrastructure section, click Java and process management > Process definition > Java virtual machine
Node agent System Administration > Node agent > node_agent. Then, in the Server Infrastructure section, click Java and process management > Process definition > Java virtual machine

Classpath

Specifies the standard class path in which the Java virtual machine code looks for classes.

If you need to add a classpath to this field, enter each classpath entry into a separate table row. You do not have to add a colon or semicolon at the end of each entry.

The only classpaths that should be added to this field are the ones that specify the location of the following items:
  • An inspection or monitoring tool to your system.
  • JAR files for a product that runs on top of this product.
  • JVM diagnostic patches or fixes.
Processing errors might occur if you add classpaths to this field that specify the location of the following items:
  • JAR files for resource providers, such as DB2®. The paths to these JAR files should be added to the relevant provider class paths.
  • A user JAR file that is used by one or more of the applications that you are running on the product. The path to this type of JAR file should be specified within each application that requires that JAR file, or in server-associated shared libraries.
  • An extension JAR file. If you need to add an extension JAR file to your system, you should use the ws.ext.dirs JVM custom property to specify the absolute path to this JAR file. You can also place the JAR file in the WAS_HOME/lib/ext/ directory, but using the ws.ext.dirs JVM custom property is the recommended approach for specifying the path to an extension JAR file.
Information Value
Data type String

Boot classpath

Specifies bootstrap classes and resources for JVM code. This option is only available for JVM instructions that support bootstrap classes and resources.

If you need to add a classpath to this field, enter each classpath entry into a table row. You do not need to add the colon or semicolon at the end of each entry.

If you need to add multiple classpaths to this field, you can use either a colon (:) or semi-colon (;), depending on which operating system the node resides, to separate these classpaths.

The only classpaths that should be added to this field are the ones that specify the location of the following items:
  • An inspection or monitoring tool to your system.
  • JAR files for a product that runs on top of this product.
  • JVM diagnostic patches or fixes.
Processing errors might occur if you add classpaths to this field that specify the location of the following items:
  • JAR files for resource providers. such as DB2. The paths to these JAR files should be added to the relevant provider class paths.
  • A user JAR file that is used by one or more of the applications that you are running on the product. The path to this type of JAR file should be specified within each application that requires that JAR file, or in server-associated shared libraries.
  • An extension JAR file. If you need to add an extension JAR file to your system, you should use the ws.ext.dirs JVM custom property to specify the absolute path to this JAR file. You can also place the JAR file in the WAS_HOME/lib/ext/ directory, but using the ws.ext.dirs JVM custom property is the recommended approach for specifying the path to an extension JAR file.

Verbose class loading

Specifies whether to use verbose debug output for class loading. The default is to not enable verbose class loading.

Information Value
Data type Boolean
Default false

Verbose garbage collection

Specifies whether to use verbose debug output for garbage collection. The default is not to enable verbose garbage collection.

Information Value
Data type Boolean
Default false

When this field is enabled, a report is written to the output stream each time the garbage collector runs. This report should give you an indication of how the Java garbage collection process is functioning.

You can check the verboseGC report to determine:
  • How much time the JVM is spending performing garbage collection.
    Ideally, you want the JVM to spend less than 5 percent of its processing time doing garbage collection. To determine the percentage of time the JVM spends in garbage collection, divide the time it took to complete the collection by the length of time since the last AF and multiply the result by 100. For example:
    83.29/3724.32 * 100 = 2.236 percent

    If you are spending more than 5 percent of your time in garbage collection and if garbage collection is occurring frequently, you might need to increase your Java heap size.

  • If the allocated heap is growing with each garbage collection occurrence.

    To determine if the allocated heap is growing, look at the percentage of the heap that is remains unallocated after each garbage collection cycle, and verify that the percentage is not continuing to decline. If the percentage of free space continues to decline you are experiencing a gradual growth in the heap size from garbage collection to garbage collection. This situation might indicate that your application has a memory leak.

For transitioning users For transitioning users: Version 7.0 and previous versions use the optthruput garbage collection algorithm. In Version 8.0 and later, the default is set to the generational garbage collector. This garbage collection algorithm can increase performance. The following JVM option is added to the WebSphere Application Server startup command: -Xgcpolicy:gencon. If you prefer to use the optthruput garbage collection alogorithm, you can remove -Xgcpolicy:gencon and the [Updated in September 2013]optthruput garbage[Updated in September 2013] collection algorithm is used.trns

Verbose JNI

Specifies whether to use verbose debug output for native method invocation. The default is not to enable verbose Java Native Interface (JNI) activity.

Information Value
Data type Boolean
Default false

Initial heap size

Specifies, in megabytes, the initial heap size available to the JVM code. If this field is left blank, the default value is used.

[IBM i] For IBM i and distributed platforms, the default initial heap size is 50 MB.

Best practice Best practice: These default values are sufficient for most applications.bprac
[IBM i] Avoid trouble Avoid trouble: For IBM i, the initial heap size must always be less than the maximum heap size. Never set the initial heap size and maximum heap size properties to the same value.gotcha

Increasing this setting can improve startup. The number of garbage collection occurrences are reduced and a 10 percent gain in performance is achieved.

Increasing the size of the Java heap continues to improves throughput until the heap becomes too large to reside in physical memory. If the heap size exceeds the available physical memory, and paging occurs, there is a noticeable decrease in performance.

Maximum heap size

Specifies, in megabytes, the maximum heap size that is available to the JVM code. If this field is left blank, the default value is used.

The default maximum heap size is 256 MB. This default value applies for both 32-bit and 64-bit configurations.

Increasing the maximum heap size setting can improve startup. When you increase the maximum heap size, you reduce the number of garbage collection occurrences with a 10 percent gain in performance.

Increasing this setting usually improves throughput until the heap becomes too large to reside in physical memory. If the heap size exceeds the available physical memory, and paging occurs, there is a noticeable decrease in performance. Therefore, it is important that the value you specify for this property allows the heap to be contained within physical memory.

Best practice Best practice: These default values are appropriate for most applications. Enable the Verbose garbage collection property if you think garbage collection is occurring too frequently. If garbage collection is occurring too frequently, increase the maximum size of the JVM heap.bprac
[IBM i]

Run HProf

Specifies whether to use HProf profiler support. To use another profiler, specify the custom profiler settings using the HProf Arguments setting. The default is not to enable HProf profiler support.

If you set the Run HProf property to true, then you must specify command-line profiler arguments as values for the HProf Arguments property.

Information Value
Data type Boolean
Default false
[IBM i]

HProf arguments

Specifies command-line profiler arguments to pass to the JVM code that starts the application server process. You can specify arguments when HProf profiler support is enabled.

HProf arguments are only required if the Run HProf property is set to true.

Debug mode

Specifies whether to run the JVM in debug mode. The default is to not enable debug mode support.

If you set the Debug mode property to true, then you must specify command-line debug arguments as values for the Debug arguments property.

Information Value
Data type Boolean
Default false

Debug arguments

Specifies command-line debug arguments to pass to the JVM code that starts the application server process. You can specify arguments when the Debug mode property is set to true.

If you enable debugging on multiple application servers on the same node, verify that the same value is not specified for the address argument. The address argument defines the port that is used for debugging. If two servers, for which debugging is enabled, are configured to use the same debug port, the servers might fail to start properly. For example, both servers might still be configured with the debug argument address=7777, which is the default value for the debug address argument.

Information Value
Data type String
Units Java command-line arguments

Generic JVM arguments

Specifies command-line arguments to pass to the Java virtual machine code that starts the application server process.

You can enter the following optional command-line arguments in the Generic JVM arguments field. If you enter more than one argument, enter a space between each argument.
Avoid trouble Avoid trouble: If the argument states that it is only for the IBM Developer Kit only, you cannot use that argument with the JVM from another provider, such as the Microsoft or Hewlett-Packardgotcha
  • [8.5.0.1 or later] -Dcom.ibm.crypto.provider.doAESInHardware:

    Set this option to true if you want to enable the Advanced Encryption Standard (AES) function that is provided with IBM SDK and Runtime Environment for AIX®, Java Technology Edition, Version 7. AES is a symmetric block cipher that encrypts and decrypts data through several rounds. Enabling this function has resulted in performance improvements in WebSphere Application Server SSL processing.

  • -Dcom.ibm.CORBA.RequestTimeout=timeout_interval

    Specify the -Dcom.ibm.CORBA.RequestTimeout= timeout_interval argument to set the timeout period for responding to requests sent from the client. This argument uses the -D option. timeout_interval is the timeout period in seconds. If your network experiences extreme latency, specify a large value to prevent timeouts. If you specify a value that is too small, an application server that participates in workload management can time out before it receives a response.

    Specify this argument only if your application is experiencing problems with timeouts. There are no recommended values for this argument.

  • -Dcom.ibm.server.allow.sigkill=true

    The -Dcom.ibm.server.allow.sigkill=true argument allows the node agent process to use the terminate method of a process when the stop method does not complete within the time interval specified for the Ping interval. This setting is useful when the node agent is monitoring an application server and loses contact with that application server.

    When the monitoring policy for the application server allows the node agent to restart the application server because automatic restart is enabled for the application server, the node agent executes the stop method on the application server process. During stop processing, the node agent monitors the application server and if the application server does not stop within the time interval specified for the Ping interval, and this argument is set to true, which is the default value, the node agent executes the terminate method on the application server process to stop the application server process.

    If you set this argument to false, the node agent continues to monitor the stop process, but does not try to restart the application server.

    To use the administrative console to disable this argument, click System Administration > Node agents > nodeagent_name > Java & Process Management > Process Definition > Java Virtual Machine > Generic JVM Arguments.

  • [8.5.0.1 or later] -Dcom.ibm.websphere.alarmthreadmonitor.hung_alarm_mute=

    This argument specifies the maximum number of times an alarm reports its full stack trace in hung-thread messages in the system logs.

    When a system alarm thread is active longer than the alarm thread monitor threshold, the application server logs a hung-thread message with the name of the alarm thread, the length of time that the alarm thread has been active, and the full exception stack trace. The full stack trace is useful for debugging the cause of the delay, but if hung-thread messages are frequently triggered, the repeated long messages can make other information in the system logs hard to find. Set this argument to an integer greater than 0 to specify the maximum number of times any single alarm reports its full stack trace. After this threshold is reached, each subsequent hung-thread message includes only the hung alarm handler's entry.

    The default value of 0 indicates that all hung-thread messages for an alarm include the full stack trace.

    Note: This property specifies a threshold for each alarm handler class, not for the total number of messages or for each alarm handler instance.
  • [8.5.0.1 or later] -Dcom.ibm.websphere.native.logging.timestamp=true

    Specify this argument to add a time stamp and thread identifier before all server debug messages that are output to the native_stdout and native_stderr log files. You can use the time stamp and thread identifier to correlate the behaviors of application server bootstrap components with the behaviors of other server mechanisms, which are indicated in the SystemOut and SystemErr log files. This behavior is disabled by default.

    When the server is configured with JVM generic argument -Dws.ext.debug=true, it emits debug messages during its bootstrapping sequence to native_stdout.log and native_stderr.log. If -Dcom.ibm.websphere.native.logging.timestamp is also set to true, the server outputs debug messages with a time stamp and thread identifier, as shown in the following example:

    [6/18/12 16:24:31:453 CDT] 00000000 
    ws.ext.mains.args[0]=-nosplash
    [6/18/12 16:24:31:453 CDT] 00000000 
    ws.ext.mains.args[1]=-application
    [6/18/12 16:24:31:453 CDT] 00000000 
    ws.ext.mains.args[2]=com.ibm.ws.bootstrap.WSLauncher
    [6/18/12 16:24:31:453 CDT] 00000000 
    ws.ext.mains.args[3]=com.ibm.ws.runtime.WsServer
    Note: You should specify -Dws.ext.debug=true only under the direction of IBM support personnel.
  • -XXallowvmshutdown:false

    Use the -XXallowvmshutdown:false argument to revert to a previous behavior for the JVM that is not correct. Java 5.0 SR10 and Java 6 SR5 correct issues in which the Java virtual machine (JVM) does not shut down correctly. If you have an application that depends on the old behavior, you can revert to the previous behavior by adding the this argument to the Generic JVM arguments section.

Information Value
Data type String
Units Java command-line arguments

Executable JAR file name

Specifies a full path name for an executable JAR file that the JVM code uses.

Information Value
Data type String
Units Path name

Disable JIT

Specifies whether to disable the just-in-time (JIT) compiler option of the JVM code.

If you disable the JIT compiler, throughput decreases noticeably. Therefore, for performance reasons, keep JIT enabled.

Information Value
Data type Boolean
Default false (JIT enabled)
Recommended JIT enabled

Operating system name

Specifies JVM settings for a given operating system.

When the process starts, the process uses the JVM settings that are specified for the node as the JVM settings for the operating system.

Reference topic    

Terms and conditions for information centers | Feedback

Last updated: April 18, 2014 05:01 AM CDT
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-nd-iseries&topic=urun_rconfproc_jvm
File name: urun_rconfproc_jvm.html