| Analysis Date | JDK | Operating System | CPU Architecture | Debug JVM? |
|---|---|---|---|---|
| 2025-12-16 | OpenJDK21 | Linux | x86 | N |
Results
Switches Identified
Switch Analysis
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| UnlockExperimentalVMOptions | boolean | Enable normal processing of flags relating to experimental features |
false | true |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| ms | <size> | set initial Java heap size | 2g | |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| mx | <size> | set maximum Java heap size | 2g | |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| MetaspaceSize | size_t | Initial threshold (in bytes) at which a garbage collection is done to reduce Metaspace usage |
NOT_LP64(16 * M) LP64_ONLY(21 * M) | 128m |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| MaxMetaspaceSize | size_t | Maximum size of Metaspaces (in bytes) | max_uintx | 512m |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| CompressedClassSpaceSize | size_t | Maximum size of class area in Metaspace when compressed class pointers are used |
1*G in range(1*M, 3*G) | 128m |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| MaxDirectMemorySize | uint64_t | Maximum total size of NIO direct-buffer allocations. Ignored if not explicitly set. |
0 in range(0, max_jlong) | 768m |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| UseShenandoahGC | boolean | Use the Shenandoah garbage collector | false | true |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| ShenandoahGCHeuristics | string | GC heuristics to use. This fine-tunes the GC mode selected, by choosing when to start the GC, how much to process on each cycle, and what other features to automatically enable. Possible values are: adaptive - adapt to maintain the given amount of free heap at all times, even during the GC cycle; static - trigger GC when free heap falls below the threshold; aggressive - run GC continuously, try to evacuate everything; compact - run GC more frequently and with deeper targets to free up more memory. |
adaptive | compact |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| ShenandoahInitFreeThreshold | int | How much heap should be free before some heuristics trigger the initial (learning) cycles. Affects cycle frequency on startup and after drastic state changes, e.g. after degenerated/full GC cycles. In percents of (soft) max heap size. |
70 in range(0,100) | 70 |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| ShenandoahMinFreeThreshold | int | How much heap should be free before most heuristics trigger the collection, even without other triggers. Provides the safety margin for many heuristics. In percents of (soft) max heap size. |
10 in range(0,100) | 5 |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| ShenandoahUncommitDelay | int | Uncommit memory for regions that were not used for more than this time. First use after that would incur allocation stalls. Actively used regions would never be uncommitted, because they do not become unused longer than this delay. Time is in milliseconds. Setting this delay to 0 effectively uncommits regions almost immediately after they become unused. |
5*60*1000 | 5000 |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| MinHeapFreeRatio | int | The minimum percentage of heap free after GC to avoid expansion. For most GCs this applies to the old generation. In G1 and ParallelGC it applies to the whole heap. |
40 in range(0, 100) | 10 |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| MaxHeapFreeRatio | int | The maximum percentage of heap free after GC to avoid shrinking. For most GCs this applies to the old generation. In G1 and ParallelGC it applies to the whole heap. |
70 in range(0, 100) | 30 |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| GCTimeRatio | int | Adaptive size policy application time to GC time ratio | 99 in range(0, max_juint) | 99 |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| UseStringDeduplication | boolean | Use string deduplication | false | true |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| StringTableSize | int | Number of buckets in the interned String table (will be rounded to nearest higher power of 2) |
defaultStringTableSize in range(minimumStringTableSize, 16777216ul /* 2^24 */) | 65536 |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value | ||||
|---|---|---|---|---|---|---|---|---|
| TieredCompilation | boolean | Enable tiered compilation |
|
true | ||||
| Analysis | OK | |||||||
| Name | Type | Description | Default Value | Your Value |
|---|---|---|---|---|
| TieredStopAtLevel | int | Stop at given compilation level | 4 in range(0, 4) | 4 |
| Analysis | OK | |||
| Name | Type | Description | Default Value | Your Value | ||||
|---|---|---|---|---|---|---|---|---|
| CompileThreshold | int | number of interpreted method invocations before (re-)compiling |
|
2000 | ||||
| Analysis | OK | |||||||
| Name | Type | Description | Default Value | Your Value | ||||
|---|---|---|---|---|---|---|---|---|
| OnStackReplacePercentage | int |
|
140 | |||||
| Analysis | OK | |||||||
