-XX:HitachiJITCompileMaxMemorySize (Option for specifying the maximum memory allocated for JIT compilation)

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.
For 32-bit JavaVM:
0 to 232-1 (4294967295)
For 64-bit JavaVM:
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