Performance tuning

You can improve the performance of applications by tuning the Eclipse OpenJ9 VM, enabling hardware features, or by using specific APIs in your application code.

OpenJ9 is configured to start with a set of default options that provide the optimal runtime environment for Java™ applications with typical workloads. However, if your application is atypical, you can improve performance by tuning the VM. Click the links to learn more about the following options:
Choosing a garbage collection policy
OpenJ9 includes several garbage collection policies. To learn more about these policies and the types of application workload that can benefit from them, see Garbage collection policies in the OpenJ9 user documentation.
Improving startup times with class data sharing
You can share class data between running VMs, which can reduce the startup time for a VM after the cache has been created. For more information, see Introduction to class data sharing in the OpenJ9 user documentation.
Choosing large pages
If your application allocates a large amount of memory and frequently accesses that memory, you might want to enable large page support on your system. For more information, see Configuring your system in the OpenJ9 user documentation.
Optimizing for cloud environments
If you are running on Linux® with the generational concurrent garbage collection policy, you can use the -XX:IdleTuningMinIdleWaitTime option to tune when free memory pages are released. This setting can reduce memory use and therefore can help to reduce the cost of running applications in a cloud environment. For more information, see -XX:IdleTuningMinIdleWaitTime in the OpenJ9 user documentation.
You can also improve performance by enabling hardware features or by using specific APIs in your application code. Click the links to learn more about the following options:
Native data
If your Java application manipulates native data, consider writing your application to take advantage of methods in the Data Access Accelerator API.
For more information, see The Data Access Accelerator Library in the J9 VM reference.
Exploiting Remote Direct Memory Access (RDMA)
High performance network infrastructure that supports Remote Direct Memory Access (RDMA) is designed to speed up communications between applications.
Exploiting Graphics Processing Units (GPU)
On Linux and Windows systems, you can improve the performance of your Java applications by offloading certain processing functions from your processor (CPU) to a graphics processing unit. For more information, see Exploiting Graphics processing units.

Debugging performance problems