1 Overview of Java SE Subscription Enterprise Performance Pack

Java SE Subscription Enterprise Performance Pack is a runtime that delivers the performance of the JDK 17 Java Virtual Machine (JVM) to a Java SE 8 runtime. For most situations, you can run Java SE 8 applications unchanged on Enterprise Performance Pack.

Enterprise Performance Pack improves performance and reduces the memory footprint for Java SE 8 workloads. It's ideal if you want or need to use Java SE 8, and you're running Java SE 8 workloads at scale. It makes better use of your processors and memory.

Enterprise Performance Pack is for server-side, headless systems (systems that operate without a graphical user interface or peripheral devices like a keyboard or a mouse) running 64-bit Linux (Intel or ARM); see Oracle JDK 8 and JRE 8 Certified System Configurations for more information. It's available as part of Oracle Java SE Subscription and Oracle Cloud Infrastructure.

Note:

Enterprise Performance Pack is a runtime. It doesn't include JavaDoc API documentation. If you want to develop Java SE 8 applications, use Oracle Java SE Development Kit 8.

Features and Enhancements of Enterprise Performance Pack

Enterprise Performance Pack includes the following new features:

  • Z Garbage Collector: Is a scalable, low latency garbage collector.
  • Compact Strings: Is a space-efficient internal representation of strings, which reduces memory footprint and garbage collection activity; it's enabled by default.
  • Unified JVM Logging: Replaces JDK 8 options that print details about the JVM with -Xlog options. See Printing JVM Information.

Enterprise Performance Pack includes the following enhancements:

  • Garbage-First (G1) Garbage Collector: Is the default garbage collector for Enterprise Performance Pack. It's targeted for multiprocessor machines scaling to a large amount of memory
  • G1 String Deduplication: Reduces the memory footprint of String objects on the Java heap by taking advantage of the fact that many String objects are identical. It's disabled by default. Enable it with the -XX:+UseStringDeduplication option. See the java command in the JDK 17 documentation.
  • Class Data Sharing (CDS): Helps reduce the startup time and memory footprint between multiple JVMs. In Enterprise Performance Pack, it's enabled by default. To disable it, see Manually Controlling Class Data Sharing.
  • Flight Recorder: Is a tool for collecting diagnostic and profiling data for a running Java application.

See Running Tools and Using Libraries on Enterprise Performance Pack for a list of tools and libraries that behave differently or are not supported on Enterprise Performance Pack. See Other Enterprise Performance Pack Differences for additional information.

Installing Enterprise Performance Pack

To install Enterprise Performance Pack, download and then unzip the .tar.gz Enterprise Performance Pack bundle.

Note:

Enterprise Performance Pack is available as part of Oracle Java SE Subscription Java SE subscription and Oracle Cloud Infrastructure. It's available to customers for download through My Oracle Support (MOS) and on oracle.com/javadownloads.

The format of the Enterprise Performance Pack bundle name is jdk-8u$UPDATE-perf-linux-x64.tar.gz, where $UPDATE is the update version number. This number corresponds to the JDK 8 update version on which Enterprise Performance Pack is based.

Enterprise Performance Pack Version Strings

The Enterprise Performance Pack version strings contain the string perf. The command java -version prints these Enterprise Performance Pack version strings:

  • The version of the Java SE 8 runtime on which it's based
  • The version of the JDK 17 Java Virtual Machine on which it's based

The command java -version prints output similar to the following:

$ java -version
java version "1.8.0_345"
Java(TM) SE Runtime Environment (build 1.8.0_345-perf-4711-b06)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.4+1-perf-4711, mixed mode)

Configuring and Using Enterprise Performance Pack

In most cases, you'll notice improved performance when you run your applications with Enterprise Performance Pack out-of-the-box. However, for optimal performance, configure Enterprise Performance Pack to use a suitable garbage collector. In addition, be aware that some tools and libraries behave differently compared to Java SE 8.

Note:

If you need additional help in using Enterprise Performance Pack such as assistance for a unique or exceptional use case or situation, contact My Oracle Support.

Choosing a Garbage Collector

When first running a Java SE 8 application with Enterprise Performance Pack, try using the default garbage collector, Garbage-First (G1), with its default settings. In most cases, you should expect considerably better performance, even if you have fine-tuned your application with a JDK 8 garbage collector. Afterward, configure G1 as described in the JDK 17 documentation. Alternatively, consult the following table, which suggests a garbage collector to use depending on which one you're using in JDK 8.

Table 1-1 Suggested Garbage Collectors

Current JDK 8 Collector Suggested Collector for Enterprise Performance Pack
Parallel Collector Continue using the Parallel Collector by explicitly specify the -XX:+UseParallelGC option. Continue using the tuning options that you were using in JDK 8.
G1 The Garbage-First (G1) Garbage Collector is the default collector for Enterprise Performance Pack. Continue using it. You don't have to explicitly specify the –XX:+UseG1GC option.
Concurrent Mark Sweep (CMS) collector

CMS is not available in Enterprise Performance Pack. Use G1 with its default settings instead. Afterward, follow the tuning suggestions in Moving to G1 from Other Collectors. If you're unable to meet your application's latency or responsiveness requirements, then consider using Z Garbage Collector (ZGC).

You're looking for a scalable low-latency collector

Use the Z Garbage Collector (ZGC). Enable it with the -XX:+UseZGC option.

See Selecting a Collector in Java Platform, Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide, Release 17 for additional advice about selecting a garbage collector.

Note:

If you have any issues tuning your garbage collector for Enterprise Performance Pack, contact My Oracle Support.

Running Tools and Using Libraries on Enterprise Performance Pack

Some tools and libraries behave differently on or have been removed from Enterprise Performance Pack. (Other tools and libraries that have been included in Enterprise Performance Pack should behave the same way as on JDK 8.)

The following JDK 8 tools behave differently on Enterprise Performance Pack

Table 1-2 Tools That Behave Differently on Enterprise Performance Pack

JDK 8 Tool Behavior of Tool on Enterprise Performance Pack
java

Enterprise Performance Pack includes several runtime options from JDK 17. However, some options from JDK 8 are not available in Enterprise Performance Pack. See Changes to JVM Runtime Options.

Enterprise Performance Pack uses Unified JVM Logging, which replaces options that print details about the JVM with -Xlog configurations. See Printing JVM Information.

JDK Mission Control (JMC) You can use JMC for a variety of purposes, such as real-time JMX monitoring. Note that recordings cannot be started from within JMC, however, files that you create from the shell can be opened.
jcmd Run jcmd <pid> help for the list of available commands.
jdb

Running jdb with the following Serviceability Agent connectors is not supported:

  • SAPIDAttachingConnector
  • SACoreAttachingConnector
  • SADebugServerAttachingConnector
jsadebugd The jsadebugd tool is not supported.
Serviceability Agent scripting The Serviceability Agent no longer provides JavaScript support.

Note:

  • Because Enterprise Performance Pack supports only headless systems, the following tools have been removed from Enterprise Performance Pack: appletviewer, javapackager, javaws, jconsole, and jvisualvm.
  • Enterprise Performance Pack does not include man pages.

The following JDK 8 libraries behave differently or are not supported on Enterprise Performance Pack:

Table 1-3 Libraries That Behave Differently or Are Not Supported on Enterprise Performance Pack

JDK 8 Library Behavior of Library on Enterprise Performance Pack
Abstract Window Toolkit (AWT) Enterprise Performance Pack always uses the AWT's headless implementation.

Note:

AWT contains two methods that indicate whether the environment is headless: GraphicsEnvironment.isHeadless() and GraphicsEnvironment.isHeadlessInstance(). Some AWT methods throw a HeadlessException if the environment is headless.
GUI libraries such as JavaFX and Swing Because Enterprise Performance Pack is for headless systems, GUI libraries aren't supported.

Note:

If you need additional help in running tools and using libraries on Enterprise Performance Pack, contact My Oracle Support.

Other Enterprise Performance Pack Differences

You may experience the following differences when using Enterprise Performance Pack:

Exception Messages

Exception messages that Enterprise Performance Pack prints may be different than those of JDK 8.

Version Strings

The format of Enterprise Performance Pack version strings is different; see Enterprise Performance Pack Version Strings.

Commercial Features

Enterprise Performance Pack doesn't support the following Java SE 8 commercial features:

  • Resource Management
  • Cooperative Memory Management

Note:

Although Application Class Data Sharing (AppCDS) is a commercial feature in JDK 8, in Enterprise Performance Pack, AppCDS is available as a regular feature.

Consequently, when you specify one of the following command-line options, Enterprise Performance Pack prints a warning message that it's ignored:

  • MemoryRestriction
  • ResourceManagement
  • ResourceManagementSampleInterval

Application Class Data Sharing (AppCDS)

You don't need to specify the -XX:+UseAppCDS command-line option to use AppCDS.

You cannot archive classes from the module path; the module system is not part of JDK 8. In addition, you cannot create a dynamic CDS archive file.