The OpenJ9 optimization pack enables the ability to optimize Java applications based on the Eclipse OpenJ9 VM, formerly known as IBM J9. Through this optimization pack, Akamas is able to tackle the problem of performance of JVM-based applications from both the point of view of cost savings and quality of service.
To achieve these goals the optimization pack provides parameters that focus on the following areas:
Garbage collection
Heap
JIT
Similarly, the bundled metrics provide visibility on the following aspects of tuned applications:
Heap and memory utilization
Garbage Collection
Execution threads
The optimization pack supports the most used versions of JVM.
Component Type | Description |
---|---|
Here’s the command to install the Eclipse OpenJ9 optimization pack using the Akamas CLI:
For more information on the process of installing or upgrading an optimization pack refer to Install Optimization Packs.
Eclipse OpenJ9 (formerly known as IBM J9) Virtual Machine version 6
Eclipse OpenJ9 (formerly known as IBM J9) Virtual Machine version 8
Eclipse OpenJ9 (formerly known as IBM J9) version 11
This page describes the Optimization Pack for Eclipse OpenJ9 (formerly known as IBM J9) version 11.
Name | Unit | Description |
---|---|---|
The following parameters require their ranges or default values to be updated according to the described rules:
Notice that the value nocompressedreferences
for j9vm_compressedReferences
can only be specified for JVMs compiled with the proper --with-noncompressedrefs
flag. If this is not the case you cannot actively disable compressed references, meaning:
for Xmx <= 57GB is useless to tune this parameter since compressed references are active by default and it is not possible to explicitly disable it
for Xmx > 57GB, since the by default (blank value) compressed references are disabled, Akamas can try to enable it. This requires removing the nocompressedreferences
from the domain
The following tables show a list of constraints that may be required in the definition of the study, depending on the tuned parameters:
Notice that
j9vm_newSpaceFixed
is mutually exclusive with j9vm_minNewSpace
and j9vm_maxNewSpace
j9vm_oldSpaceFixed
is mutually exclusive with j9vm_minOldSpace
and j9vm_maxOldSpace
the sum of j9vm_minNewSpace
and j9vm_minOldSpace
must be equal to j9vm_minHeapSize
, so it's useless to tune all of them together. Max values seem to be more complex.
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Parameter | Default value | Domain |
---|---|---|
Formula | Notes |
---|---|
jvm_heap_size
bytes
The size of the JVM heap memory
jvm_heap_used
bytes
The amount of heap memory used
jvm_heap_util
percent
The utilization % of heap memory
jvm_memory_used
bytes
The total amount of memory used across all the JVM memory pools
jvm_memory_used_details
bytes
The total amount of memory used broken down by pool (e.g., code-cache, compressed-class-space)
jvm_memory_buffer_pool_used
bytes
The total amount of bytes used by buffers within the JVM buffer memory pool
jvm_gc_time
percent
The % of wall clock time the JVM spent doing stop the world garbage collection activities
jvm_gc_time_details
percent
The % of wall clock time the JVM spent doing stop the world garbage collection activities broken down by type of garbage collection algorithm (e.g., ParNew)
jvm_gc_count
collections/s
The total number of stop the world JVM garbage collections that have occurred per second
jvm_gc_count_details
collections/s
The total number of stop the world JVM garbage collections that have occurred per second, broken down by type of garbage collection algorithm (e.g., G1, CMS)
jvm_gc_duration
seconds
The average duration of a stop the world JVM garbage collection
jvm_gc_duration_details
seconds
The average duration of a stop the world JVM garbage collection broken down by type of garbage collection algorithm (e.g., G1, CMS)
jvm_threads_current
threads
The total number of active threads within the JVM
jvm_threads_deadlocked
threads
The total number of deadlocked threads within the JVM
jvm_compilation_time
milliseconds
The total time spent by the JVM JIT compiler compiling bytecode
j9vm_minHeapSize
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
Minimum heap size (in megabytes)
j9vm_maxHeapSize
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
Maximum heap size (in megabytes)
j9vm_minFreeHeap
real
percent
0.3
0.1
→ 0.5
yes
Specify the minimum % free heap required after global GC
j9vm_maxFreeHeap
real
percent
0.6
0.4
→ 0.9
yes
Specify the maximum % free heap required after global GC
j9vm_gcPolicy
categorical
gencon
gencon
, subpool
, optavgpause
, optthruput
, nogc
yes
GC policy to use
j9vm_gcThreads
integer
threads
You should select your own default value.
1
→ 64
yes
Number of threads the garbage collector uses for parallel operations
j9vm_scvTenureAge
integer
10
1
→ 14
yes
Set the initial tenuring threshold for generational concurrent GC policy
j9vm_scvAdaptiveTenureAge
categorical
blank
blank, -Xgc:scvNoAdaptiveTenure
yes
Enable the adaptive tenure age for generational concurrent GC policy
j9vm_newSpaceFixed
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The fixed size of the new area when using the gencon GC policy. Must not be set alongside min or max
j9vm_minNewSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The initial size of the new area when using the gencon GC policy
j9vm_maxNewSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The maximum size of the new area when using the gencon GC policy
j9vm_oldSpaceFixed
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The fixed size of the old area when using the gencon GC policy. Must not be set alongside min or max
j9vm_minOldSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The initial size of the old area when using the gencon GC policy
j9vm_maxOldSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The maximum size of the old area when using the gencon GC policy
j9vm_concurrentScavenge
categorical
concurrentScavenge
concurrentScavenge
, noConcurrentScavenge
yes
Support pause-less garbage collection mode with gencon
j9vm_gcPartialCompact
categorical
nopartialcompactgc
nopartialcompactgc
, partialcompactgc
yes
Enable partial compaction
j9vm_concurrentMeter
categorical
soa
soa
, loa
, dynamic
yes
Determine which area is monitored by the concurrent mark
j9vm_concurrentBackground
integer
0
0
→ 128
yes
The number of background threads assisting the mutator threads in concurrent mark
j9vm_concurrentSlack
integer
megabytes
0
You should select your own domain.
yes
The target size of free heap space for concurrent collectors
j9vm_concurrentLevel
integer
percent
8
0
→ 100
yes
The ratio between the amount of heap allocated and the amount of heap marked
j9vm_gcCompact
categorical
blank
blank, -Xcompactgc
, -Xnocompactgc
yes
Enables full compaction on all garbage collections (system and global)
j9vm_minGcTime
real
percent
0.05
0.0
→ 1.0
yes
The minimum percentage of time to be spent in garbage collection, triggering the resize of the heap to meet the specified values
j9vm_maxGcTime
real
percent
0.13
0.0
→ 1.0
yes
The maximum percentage of time to be spent in garbage collection, triggering the resize of the heap to meet the specified values
j9vm_loa
categorical
loa
loa
, noloa
yes
Enable the allocation of the large area object during garbage collection
j9vm_loa_initial
real
0.05
0.0
→ 0.95
yes
The initial portion of the tenure area allocated to the large area object
j9vm_loa_minimum
real
0.01
0.0
→ 0.95
yes
The minimum portion of the tenure area allocated to the large area object
j9vm_loa_maximum
real
0.5
0.0
→ 0.95
yes
The maximum portion of the tenure area allocated to the large area object
j9vm_jitOptlevel
ordinal
noOpt
noOpt
, cold
, warm
, hot
, veryHot
, scorching
yes
Force the JIT compiler to compile all methods at a specific optimization level
j9vm_compilationThreads
integer
threads
You should select your own default value.
1
→ 7
yes
Number of JIT threads
j9vm_codeCacheTotal
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
Maximum size limit in MB for the JIT code cache
j9vm_jit_count
integer
10000
0
→ 1000000
yes
The number of times a method is called before it is compiled
j9vm_lockReservation
categorical
blank
blank, -XlockReservation
no
Enables an optimization that presumes a monitor is owned by the thread that last acquired it
j9vm_compressedReferences
categorical
blank
blank, -Xcompressedrefs
, -Xnocompressedrefs
yes
Enable/disable the use of compressed references
j9vm_aggressiveOpts
categorical
blank
blank, -Xaggressive
yes
Enable the use of aggressive performance optimization features, which are expected to become default in upcoming releases
j9vm_virtualized
categorical
blank
blank, -Xtune:virtualized
yes
Optimize the VM for virtualized environment, reducing CPU usage when idle
j9vm_shareclasses
categorical
blank
blank, -Xshareclasses
yes
Enable class sharing
j9vm_quickstart
categorical
blank
blank, -Xquickstart
yes
Run JIT with only a subset of optimizations, improving the performance of short-running applications
j9vm_minimizeUserCpu
categorical
blank
blank, -Xthr:minimizeUserCPU
yes
Minimizes user-mode CPU usage in thread synchronization where possible
j9vm_minNewSpace
25% of j9vm_minHeapSize
must not exceed j9vm_minHeapSize
j9vm_maxNewSpace
25% of j9vm_maxHeapSize
must not exceed j9vm_maxHeapSize
j9vm_minOldSpace
75% of j9vm_minHeapSize
must not exceed j9vm_minHeapSize
j9vm_maxOldSpace
same as j9vm_maxHeapSize
must not exceed j9vm_maxHeapSize
j9vm_gcthreads
number of CPUs - 1, up to a maximum of 64
capped to default, no benefit in exceeding that value
j9vm_compressedReferences
enabled for j9vm_maxHeapSize<= 57 GB
jvm.j9vm_minHeapSize < jvm.j9vm_maxHeapSize
jvm.j9vm_minNewSpace < jvm.j9vm_maxNewSpace && jvm.j9vm_minNewSpace < jvm.j9vm_minHeapSize && jvm.j9vm_maxNewSpace < jvm.j9vm_maxHeapSize
jvm.j9vm_minOldSpace < jvm.j9vm_maxOldSpace && jvm.j9vm_minOldSpace < jvm.j9vm_minHeapSize && jvm.j9vm_maxOldSpace < jvm.j9vm_maxHeapSize
jvm.j9vm_loa_minimum <= jvm.j9vm_loa_initial && jvm.j9vm_loa_initial <= jvm.j9vm_loa_maximum
jvm.j9vm_minFreeHeap + 0.05 < jvm.j9vm_maxFreeHeap
jvm.j9vm_minGcTimeMin < jvm.j9vm_maxGcTime
This page describes the Optimization Pack for Eclipse OpenJ9 (formerly known as IBM J9) Virtual Machine version 8.
Name | Unit | Description |
---|---|---|
The following parameters require their ranges or default values to be updated according to the described rules:
Notice that the value nocompressedreferences
for j9vm_compressedReferences
can only be specified for JVMs compiled with the proper --with-noncompressedrefs
flag. If this is not the case you cannot actively disable compressed references, meaning:
for Xmx <= 57GB is useless to tune this parameter since compressed references are active by default and it is not possible to explicitly disable it
for Xmx > 57GB, since the by default (blank value) compressed references are disabled, Akamas can try to enable it. This requires removing the nocompressedreferences
from the domain
The following tables show a list of constraints that may be required in the definition of the study, depending on the tuned parameters:
Notice that
j9vm_newSpaceFixed
is mutually exclusive with j9vm_minNewSpace
and j9vm_maxNewSpace
j9vm_oldSpaceFixed
is mutually exclusive with j9vm_minOldSpace
and j9vm_maxOldSpace
the sum of j9vm_minNewSpace
and j9vm_minOldSpace
must be equal to j9vm_minHeapSize
, so it's useless to tune all of them together. Max values seem to be more complex.
This page describes the Optimization Pack for Eclipse OpenJ9 (formerly known as IBM J9) Virtual Machine version 6.
Name | Unit | Description |
---|---|---|
The following parameters require their ranges or default values to be updated according to the described rules:
Notice that the value nocompressedreferences
for j9vm_compressedReferences
can only be specified for JVMs compiled with the proper --with-noncompressedrefs
flag. If this is not the case you cannot actively disable compressed references, meaning:
for Xmx <= 57GB is useless to tune this parameter since compressed references are active by default and it is not possible to explicitly disable it
for Xmx > 57GB, since the by default (blank value) compressed references are disabled, Akamas can try to enable it. This requires removing the nocompressedreferences
from the domain
The following tables show a list of constraints that may be required in the definition of the study, depending on the tuned parameters:
Notice that
j9vm_newSpaceFixed
is mutually exclusive with j9vm_minNewSpace
and j9vm_maxNewSpace
j9vm_oldSpaceFixed
is mutually exclusive with j9vm_minOldSpace
and j9vm_maxOldSpace
the sum of j9vm_minNewSpace
and j9vm_minOldSpace
must be equal to j9vm_minHeapSize
, so it's useless to tune all of them together. Max values seem to be more complex.
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Parameter | Default value | Domain |
---|---|---|
Formula | Notes |
---|---|
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Name | Type | Unit | Default | Domain | Restart | Description |
---|---|---|---|---|---|---|
Parameter | Default value | Domain |
---|---|---|
Formula | Notes |
---|---|
jvm_heap_size
bytes
The size of the JVM heap memory
jvm_heap_used
bytes
The amount of heap memory used
jvm_heap_util
percent
The utilization % of heap memory
jvm_memory_used
bytes
The total amount of memory used across all the JVM memory pools
jvm_memory_used_details
bytes
The total amount of memory used broken down by pool (e.g., code-cache, compressed-class-space)
jvm_memory_buffer_pool_used
bytes
The total amount of bytes used by buffers within the JVM buffer memory pool
jvm_gc_time
percent
The % of wall clock time the JVM spent doing stop the world garbage collection activities
jvm_gc_time_details
percent
The % of wall clock time the JVM spent doing stop the world garbage collection activities broken down by type of garbage collection algorithm (e.g., ParNew)
jvm_gc_count
collections/s
The total number of stop the world JVM garbage collections that have occurred per second
jvm_gc_count_details
collections/s
The total number of stop the world JVM garbage collections that have occurred per second, broken down by type of garbage collection algorithm (e.g., G1, CMS)
jvm_gc_duration
seconds
The average duration of a stop the world JVM garbage collection
jvm_gc_duration_details
seconds
The average duration of a stop the world JVM garbage collection broken down by type of garbage collection algorithm (e.g., G1, CMS)
jvm_threads_current
threads
The total number of active threads within the JVM
jvm_threads_deadlocked
threads
The total number of deadlocked threads within the JVM
jvm_compilation_time
milliseconds
The total time spent by the JVM JIT compiler compiling bytecode
j9vm_minHeapSize
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
Minimum heap size (in megabytes)
j9vm_maxHeapSize
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
Maximum heap size (in megabytes)
j9vm_minFreeHeap
real
percent
0.3
0.1
→ 0.5
yes
Specify the minimum % free heap required after global GC
j9vm_maxFreeHeap
real
percent
0.6
0.4
→ 0.9
yes
Specify the maximum % free heap required after global GC
j9vm_gcPolicy
categorical
gencon
gencon
, subpool
, optavgpause
, optthruput
, nogc
yes
GC policy to use
j9vm_gcThreads
integer
threads
You should select your own default value.
1
→ 64
yes
Number of threads the garbage collector uses for parallel operations
j9vm_scvTenureAge
integer
10
1
→ 14
yes
Set the initial tenuring threshold for generational concurrent GC policy
j9vm_scvAdaptiveTenureAge
categorical
blank
blank, -Xgc:scvNoAdaptiveTenure
yes
Enable the adaptive tenure age for generational concurrent GC policy
j9vm_newSpaceFixed
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The fixed size of the new area when using the gencon GC policy. Must not be set alongside min or max
j9vm_minNewSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The initial size of the new area when using the gencon GC policy
j9vm_maxNewSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The maximum size of the new area when using the gencon GC policy
j9vm_oldSpaceFixed
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The fixed size of the old area when using the gencon GC policy. Must not be set alongside min or max
j9vm_minOldSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The initial size of the old area when using the gencon GC policy
j9vm_maxOldSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The maximum size of the old area when using the gencon GC policy
j9vm_concurrentScavenge
categorical
concurrentScavenge
concurrentScavenge
, noConcurrentScavenge
yes
Support pause-less garbage collection mode with gencon
j9vm_gcPartialCompact
categorical
nopartialcompactgc
nopartialcompactgc
, partialcompactgc
yes
Enable partial compaction
j9vm_concurrentMeter
categorical
soa
soa
, loa
, dynamic
yes
Determine which area is monitored by the concurrent mark
j9vm_concurrentBackground
integer
0
0
→ 128
yes
The number of background threads assisting the mutator threads in concurrent mark
j9vm_concurrentSlack
integer
megabytes
0
You should select your own domain.
yes
The target size of free heap space for concurrent collectors
j9vm_concurrentLevel
integer
percent
8
0
→ 100
yes
The ratio between the amount of heap allocated and the amount of heap marked
j9vm_gcCompact
categorical
blank
blank, -Xcompactgc
, -Xnocompactgc
yes
Enables full compaction on all garbage collections (system and global)
j9vm_minGcTime
real
percent
0.05
0.0
→ 1.0
yes
The minimum percentage of time to be spent in garbage collection, triggering the resize of the heap to meet the specified values
j9vm_maxGcTime
real
percent
0.13
0.0
→ 1.0
yes
The maximum percentage of time to be spent in garbage collection, triggering the resize of the heap to meet the specified values
j9vm_loa
categorical
loa
loa
, noloa
yes
Enable the allocation of the large area object during garbage collection
j9vm_loa_initial
real
0.05
0.0
→ 0.95
yes
The initial portion of the tenure area allocated to the large area object
j9vm_loa_minimum
real
0.01
0.0
→ 0.95
yes
The minimum portion of the tenure area allocated to the large area object
j9vm_loa_maximum
real
0.5
0.0
→ 0.95
yes
The maximum portion of the tenure area allocated to the large area object
j9vm_jitOptlevel
ordinal
noOpt
noOpt
, cold
, warm
, hot
, veryHot
, scorching
yes
Force the JIT compiler to compile all methods at a specific optimization level
j9vm_compilationThreads
integer
integer
You should select your own default value.
1
→ 7
yes
Number of JIT threads
j9vm_codeCacheTotal
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
Maximum size limit in MB for the JIT code cache
j9vm_jit_count
integer
10000
0
→ 1000000
yes
The number of times a method is called before it is compiled
j9vm_lockReservation
categorical
categorical
blank, -XlockReservation
no
Enables an optimization that presumes a monitor is owned by the thread that last acquired it
j9vm_compressedReferences
categorical
blank
blank, -Xcompressedrefs
, -Xnocompressedrefs
yes
Enable/disable the use of compressed references
j9vm_aggressiveOpts
categorical
blank
blank, -Xaggressive
yes
Enable the use of aggressive performance optimization features, which are expected to become default in upcoming releases
j9vm_virtualized
categorical
blank
blank, -Xtune:virtualized
yes
Optimize the VM for virtualized environment, reducing CPU usage when idle
j9vm_shareclasses
categorical
blank
blank, -Xshareclasses
yes
Enable class sharing
j9vm_quickstart
categorical
blank
blank, -Xquickstart
yes
Run JIT with only a subset of optimizations, improving the performance of short-running applications
j9vm_minimizeUserCpu
categorical
blank
blank, -Xthr:minimizeUserCPU
yes
Minimizes user-mode CPU usage in thread synchronization where possible
j9vm_minNewSpace
25% of j9vm_minHeapSize
must not exceed j9vm_minHeapSize
j9vm_maxNewSpace
25% of j9vm_maxHeapSize
must not exceed j9vm_maxHeapSize
j9vm_minOldSpace
75% of j9vm_minHeapSize
must not exceed j9vm_minHeapSize
j9vm_maxOldSpace
same as j9vm_maxHeapSize
must not exceed j9vm_maxHeapSize
j9vm_gcthreads
number of CPUs - 1, up to a maximum of 64
capped to default, no benefit in exceeding that value
j9vm_compressedReferences
enabled for j9vm_maxHeapSize<= 57 GB
jvm.j9vm_minHeapSize < jvm.j9vm_maxHeapSize
jvm.j9vm_minNewSpace < jvm.j9vm_maxNewSpace && jvm.j9vm_minNewSpace < jvm.j9vm_minHeapSize && jvm.j9vm_maxNewSpace < jvm.j9vm_maxHeapSize
jvm.j9vm_minOldSpace < jvm.j9vm_maxOldSpace && jvm.j9vm_minOldSpace < jvm.j9vm_minHeapSize && jvm.j9vm_maxOldSpace < jvm.j9vm_maxHeapSize
jvm.j9vm_loa_minimum <= jvm.j9vm_loa_initial && jvm.j9vm_loa_initial <= jvm.j9vm_loa_maximum
jvm.j9vm_minFreeHeap + 0.05 < jvm.j9vm_maxFreeHeap
jvm.j9vm_minGcTimeMin < jvm.j9vm_maxGcTime
jvm_heap_size
bytes
The size of the JVM heap memory
jvm_heap_used
bytes
The amount of heap memory used
jvm_heap_util
percent
The utilization % of heap memory
jvm_memory_used
bytes
The total amount of memory used across all the JVM memory pools
jvm_memory_used_details
bytes
The total amount of memory used broken down by pool (e.g., code-cache, compressed-class-space)
jvm_memory_buffer_pool_used
bytes
The total amount of bytes used by buffers within the JVM buffer memory pool
jvm_gc_time
percent
The % of wall clock time the JVM spent doing stop the world garbage collection activities
jvm_gc_time_details
percent
The % of wall clock time the JVM spent doing stop the world garbage collection activities broken down by type of garbage collection algorithm (e.g., ParNew)
jvm_gc_count
collections/s
The total number of stop the world JVM garbage collections that have occurred per second
jvm_gc_count_details
collections/s
The total number of stop the world JVM garbage collections that have occurred per second, broken down by type of garbage collection algorithm (e.g., G1, CMS)
jvm_gc_duration
seconds
The average duration of a stop the world JVM garbage collection
jvm_gc_duration_details
seconds
The average duration of a stop the world JVM garbage collection broken down by type of garbage collection algorithm (e.g., G1, CMS)
jvm_threads_current
threads
The total number of active threads within the JVM
jvm_threads_deadlocked
threads
The total number of deadlocked threads within the JVM
jvm_compilation_time
milliseconds
The total time spent by the JVM JIT compiler compiling bytecode
j9vm_minHeapSize
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
Minimum heap size (in megabytes)
j9vm_maxHeapSize
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
Maximum heap size (in megabytes)
j9vm_minFreeHeap
real
percent
0.3
0.1
→ 0.5
yes
Specify the minimum % free heap required after global GC
j9vm_maxFreeHeap
real
percent
0.6
0.4
→ 0.9
yes
Specify the maximum % free heap required after global GC
j9vm_gcPolicy
categorical
gencon
gencon
, subpool
, optavgpause
, optthruput
, nogc
yes
GC policy to use
j9vm_gcThreads
integer
threads
You should select your own default value.
1
→ 64
yes
Number of threads the garbage collector uses for parallel operations
j9vm_scvTenureAge
integer
10
1
→ 14
yes
Set the initial tenuring threshold for generational concurrent GC policy
j9vm_scvAdaptiveTenureAge
categorical
blank
blank, -Xgc:scvNoAdaptiveTenure
yes
Enable the adaptive tenure age for generational concurrent GC policy
j9vm_newSpaceFixed
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The fixed size of the new area when using the gencon GC policy. Must not be set alongside min or max
j9vm_minNewSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The initial size of the new area when using the gencon GC policy
j9vm_maxNewSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The maximum size of the new area when using the gencon GC policy
j9vm_oldSpaceFixed
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The fixed size of the old area when using the gencon GC policy. Must not be set alongside min or max
j9vm_minOldSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The initial size of the old area when using the gencon GC policy
j9vm_maxOldSpace
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
The maximum size of the old area when using the gencon GC policy
j9vm_concurrentScavenge
categorical
concurrentScavenge
concurrentScavenge
, noConcurrentScavenge
yes
Support pause-less garbage collection mode with gencon
j9vm_gcPartialCompact
categorical
nopartialcompactgc
nopartialcompactgc
, partialcompactgc
yes
Enable partial compaction
j9vm_concurrentMeter
categorical
soa
soa
, loa
, dynamic
yes
Determine which area is monitored by the concurrent mark
j9vm_concurrentBackground
integer
0
0
→ 128
yes
The number of background threads assisting the mutator threads in concurrent mark
j9vm_concurrentSlack
integer
megabytes
0
You should select your own domain.
yes
The target size of free heap space for concurrent collectors
j9vm_concurrentLevel
integer
percent
8
0
→ 100
yes
The ratio between the amount of heap allocated and the amount of heap marked
j9vm_gcCompact
categorical
blank
blank, -Xcompactgc
, -Xnocompactgc
yes
Enables full compaction on all garbage collections (system and global)
j9vm_minGcTime
real
percent
0.05
0.0
→ 1.0
yes
The minimum percentage of time to be spent in garbage collection, triggering the resize of the heap to meet the specified values
j9vm_maxGcTime
real
percent
0.13
0.0
→ 1.0
yes
The maximum percentage of time to be spent in garbage collection, triggering the resize of the heap to meet the specified values
j9vm_loa
categorical
loa
loa
, noloa
yes
Enable the allocation of the large area object during garbage collection
j9vm_loa_initial
real
0.05
0.0
→ 0.95
yes
The initial portion of the tenure area allocated to the large area object
j9vm_loa_minimum
real
0.01
0.0
→ 0.95
yes
The minimum portion of the tenure area allocated to the large area object
j9vm_loa_maximum
real
0.5
0.0
→ 0.95
yes
The maximum portion of the tenure area allocated to the large area object
j9vm_jitOptlevel
ordinal
noOpt
noOpt
, cold
, warm
, hot
, veryHot
, scorching
yes
Force the JIT compiler to compile all methods at a specific optimization level
j9vm_codeCacheTotal
integer
megabytes
You should select your own default value.
You should select your own domain.
yes
Maximum size limit in MB for the JIT code cache
j9vm_jit_count
integer
10000
0
→ 1000000
yes
The number of times a method is called before it is compiled
j9vm_compressedReferences
categorical
blank
blank, -Xcompressedrefs
, -Xnocompressedrefs
yes
Enable/disable the use of compressed references
j9vm_aggressiveOpts
categorical
blank
blank, -Xaggressive
yes
Enable the use of aggressive performance optimization features, which are expected to become default in upcoming releases
j9vm_virtualized
categorical
blank
blank, -Xtune:virtualized
yes
Optimize the VM for virtualized environment, reducing CPU usage when idle
j9vm_shareclasses
categorical
blank
blank, -Xshareclasses
yes
Enable class sharing
j9vm_quickstart
categorical
blank
blank, -Xquickstart
yes
Run JIT with only a subset of optimizations, improving the performance of short-running applications
j9vm_minimizeUserCpu
categorical
blank
blank, -Xthr:minimizeUserCPU
yes
Minimizes user-mode CPU usage in thread synchronization where possible
j9vm_minNewSpace
25% of j9vm_minHeapSize
must not exceed j9vm_minHeapSize
j9vm_maxNewSpace
25% of j9vm_maxHeapSize
must not exceed j9vm_maxHeapSize
j9vm_minOldSpace
75% of j9vm_minHeapSize
must not exceed j9vm_minHeapSize
j9vm_maxOldSpace
same as j9vm_maxHeapSize
must not exceed j9vm_maxHeapSize
j9vm_gcthreads
number of CPUs - 1, up to a maximum of 64
capped to default, no benefit in exceeding that value
j9vm_compressedReferences
enabled for j9vm_maxHeapSize<= 57 GB
jvm.j9vm_minHeapSize < jvm.j9vm_maxHeapSize
jvm.j9vm_minNewSpace < jvm.j9vm_maxNewSpace && jvm.j9vm_minNewSpace < jvm.j9vm_minHeapSize && jvm.j9vm_maxNewSpace < jvm.j9vm_maxHeapSize
jvm.j9vm_minOldSpace < jvm.j9vm_maxOldSpace && jvm.j9vm_minOldSpace < jvm.j9vm_minHeapSize && jvm.j9vm_maxOldSpace < jvm.j9vm_maxHeapSize
jvm.j9vm_loa_minimum <= jvm.j9vm_loa_initial && jvm.j9vm_loa_initial <= jvm.j9vm_loa_maximum
jvm.j9vm_minFreeHeap + 0.05 < jvm.j9vm_maxFreeHeap
jvm.j9vm_minGcTimeMin < jvm.j9vm_maxGcTime