-XX:HitachiJITCompileMaxMemorySize (Option for specifying the maximum memory allocated for JIT compilation)
- Organization of this page
Format
-XX:HitachiJITCompileMaxMemorySize=integer-value
Description
Specify the uppler limit value for the C heap memory size secured for the JIT compilation. When the C heap memory secured for the JIT complitaion exceeds the upper limit, this option outputs logs to the JavaVM log file and also controls the JIT compliaton. Hereafter, the Java method, for which the JIT compilation is executed, will only be executed with an interpreter. Even when the JIT compilation is controlled, JavaVM is not terminated forcibly and continues processing.
If 0 is specified, the memory to be secured for the JIT compilation will not have an upper limit.
Note that the JIT compilation is executed using the JavaVM internal threads (JIT compiler threads). There are two JIT compiler threads and the value acquired by dividing the upper limit specified in this option by two will become the upper limit for one JIT compiler thread.
Also, even when the upper limit is set up in this option, if the actually usable C heap is less than the upper limit, a C heap shortage might occur before the upper limit is reached. In this case, JavaVM is terminated forcibly.
- Default value
-
-
-XX:HitachiJITCompileMaxMemorySize=0
-
- Prerequisite options
-
-
-server
-
Argument
- integer-value
-
Specifies the upper limit of the memory to be secured for the JIT compilation. The unit is in seconds. You can also specify k for kilo, m for mega, and g for giga. The specifiable range is as follows. If a value outside the range is specified, 0 will be assumed.
-
0 to 264-1 (18446744073709551615)
If 0 is specified, the memory to be secured for the JIT compilation will not have an upper limit. If C heap is insufficient during JIT compilation, JavaVM will terminate forcibly.
-
Output format
[id][Thread: thread_id]<date>["thread_name" exceeded max memory size.] [current_sizeK->new_sizeK/limit_size_per_threadK/limit_sizeK] [compile_target][byte_code_size]
The following is a description of the output contents:
- id
-
JMS (JavaVM log file identifier)
- thread_id
-
Thread ID of the JIT compiler thread that controls the JIT compilation.
- date
-
A date on which the JIT compilation is controlled.
Outputs in the unit of milli seconds if -XX:+HitachiOutputMilliTime option is specified.
- thread_name
-
A thread name of the JIT compiler thread that controls the JIT compilation.
- current_size
-
Currently secured memory size of the JIT compiler thread that controls the JIT compilation (unit: kilobytes).
- new_size
-
Total of the currently secured memory size and the size to be additionally secured for the JIT compiler thread that controls the JIT compilation (unit: kilobytes).
- limit_size_per_thread
-
Upper limit for one JIT compiler thread (unit: Kilobyte).
- limit_size
-
Upper limit of all the JIT compiler threads (unit: kilobytes).
- compile_target
-
Java method for which the JIT compilation processing is performed.
- byte_code_size
-
Byte code size of the Java method for which the JIT compilation processing is performed (unit: bytes).
Examples of output
The following is an example of output when the upper limit is reached when -XX:HitachiJITCompileMaxMemorySize=536870912 is specified as the option and C heap of 262145 kilobytes is allocated to one JIT compiler thread:
[JMS][Thread: 0x03bf1150]<Wed Feb 24 14:33:58 2010>["CompilerThread0" exceeded max memory size.][262143K->262145K/262144K/524288K][test1.func][213]
Precautions
-
If the memory secured for the JIT compilation exceeds the upper limit specified in this option and the JIT compilation is controlled, the throughput of the application will decrease.
-
If a value other than a natural number is specified, the operation will be the same as when an un-defined option is specified.