-
Notifications
You must be signed in to change notification settings - Fork 96
Features Contributed by SAP
This page lists features of SapMachine that were crafted by SAP to enhance the enterprise-readiness of SapMachine. In general, we contribute these directly upstream to OpenJDK. We might downport these to an earlier version of SapMachine, though. If a feature is not accepted by the OpenJDK community, but considered essential by us, it might only appear in SapMachine. This listing omits bug fixes, work on our platform ports, work on the build and test infrastructure etc. we do directly in OpenJDK.
The Metaspace memory region contains metadata for loaded java classes. It can get abnormally large and is a common cause for high memory footprint and Java OOMs, especially when running programs with many class loaders (e.g. JEE), lots of reflection or lambdas.
SAP did significant work in improving the Metaspace allocator. We greatly reduced its memory footprint and made it more predictable. Additionally, we contributed a large number of smaller fixes and improvements.
OpenJDK | SapMachine | |
---|---|---|
8198423: Improve metaspace chunk allocation | 11 | 11 |
Applications run in Containers or the Cloud need to be optimized for small footprint.
OpenJDK | SapMachine | |
---|---|---|
8198510: Enable UseDynamicNumberOfGCThreads by default We saw the VM starting too many GC threads. |
11 | 11 |
8198756: Lazy allocation of compiler threads We saw the VM starting too many compiler threads. |
11 | 11 |
8213086: Compiler thread creation should be bounded by available space in memory and Code Cache We saw the VM starting too many compiler threads. |
11.0.3 | 11.0.2 |
8196062: Enable docker container related tests for linux ppc64le This also needed some functional improvements. |
11 | 11 |
8197412: Enable docker container related tests for linux s390x | 11 | 11 |
8220787: Create new switch to redirect error reporting output to stdout or stderr | 13 | 13 |
OpenJDK | SapMachine | |
---|---|---|
8170868: DefaultProxySelector should use system defaults on Windows, MacOS and Gnome | 9 | 9 |
8213082: (zipfs) Add support for POSIX file permissions | 14 | 11.0.2 |
8191521: handle long relative path specified in -Xbootclasspath/a on windows | 11.0.6, 14 | 11.0.6, 14 |
[] () | 11.0., 14 | 11.0., 14 |
OpenJDK | SapMachine | |
---|---|---|
8215962: Support ThreadPriorityPolicy mode 1 for non-root users on linux/bsd | 11.0.3, 13 | 11.0.2 |
Configuring stack sizes used to depend strongly on the system page size and was optimized for 4K pages. We made stack configuration less dependent on the page size wrt. overflow detection and minimal stack sizes.
OpenJDK | SapMachine | |
---|---|---|
8170655: [posix] Fix minimum stack size computations | 10 | 10 |
8139864: Improve handling of stack protection zones. | 10 | 10 |
Many exceptions thrown in OpenJDK 10 and earlier don't give detailed information about the underlying problem, although it's known when the exception is thrown. We improve these messages step by step.
OpenJDK | SapMachine | |
---|---|---|
8197405: Improve messages of AbstractMethodErrors and IncompatibleClassChangeErrors. | 11 | 10 |
8204268: Improve some IncompatibleClassChangeError messages. | 11 | 11 |
8199852: Print more information about class loaders in LinkageErrors. | 11 | 11 |
8201593: Print array length in ArrayIndexOutOfBoundsException., 8217628 | 11 | 11 |
8203881: Print erroneous size in NegativeArraySizeException | 11 | 11 |
8199940: Print more information about class loaders in IllegalAccessErrors | 11 | 11 |
8204943: Improve message of ArrayStoreException. | 11 | 11 |
8205525: Improve exception messages during manifest parsing of jar archives. | 12 | 12 |
JEP 358: Helpful NullPointerExceptions This feature is off per default in OpenJDK 14. In SapMachine, it is on. See also 8233014: Enable ShowCodeDetailsInExceptionMessages per default. | 14 | 11.0.6, 13.0.2 |
8237962: Give better error output for invalid OCSP response intervals in CertPathValidator check | *11.0.8, 15 | *11.0.8, 15 |
[] () | 11.0., 14 | 11.0., 14 |
In Cloud Environments the size of the JVM package, of it's Installation and of the running image matter. We do improvements to reduce these sizes.
OpenJDK | SapMachine | |
---|---|---|
8234525: Enable link-time section-gc for linux s390x to remove unused code | 11.0.7, 14 | 11.0.7, 14 |
8233078 fix minimal VM build on Linux ppc64(le) 8233328 fix minimal VM build on Linux s390x The minimal VM is a build-time variant of the JVM native library. It excludes a row of algorithms. It can be used in apps that execute very few Java code over time and need to be very small. | 11.0.7, 14 | 11.0.7, 14 |
8237192 Generate stripped/public pdbs on Windows for jdk images This reduces the size of files containing debug Information while assuring stacks are properly printed. | 11.0.?, 15 | 11.0.?, 15 |
[] () | 11.0., 14 | 11.0., 14 |
SAP JVM was known for its debugging on demand. This means you could attach at any time to an application running on SAP JVM and start debugging it. We want to enhance OpenJDK with similar features.
OpenJDK | SapMachine | |
---|---|---|
8214892: Delayed starting of debugging via jcmd | 11.0.3 | 11.0.2 |
These changes improve the VM performance if debugging is enabled: | ||
8214352: C1: Unnecessary "compilation bailout: block join failed" with JVMTI | 11.0.3, 13 | 11.0.2 |
8216556: Unnecessary liveness computation with JVMTI | 11.0.4, 13 | 11.0.4, 13 |
8227680: FastJNIAccessors: Check for JVMTI field access event requests at runtime | 14 | 14 |
Jcmd allows to request information from a running Java VM. SAP JVM knows similar tools. We add the commands known in the SAP JVM tools to Jcmd.
We will improve Java Flight Recorder and Mission Control as a replacement of SAP JVM Profiler.
OpenJDK | SapMachine | |
---|---|---|
8207392: [PPC64] Implement JFR profiling. | 11 | 11 |
8211768: [s390] Implement JFR profiling. | 11.0.2 | 11.0.2 |
8223438: add VirtualizationInformation JFR event | 13 | 13 |
8224230: [PPC64, s390] Support AsyncGetCallTrace needed for external profiling tools as async. | 13 | 13 |
OpenJDK | SapMachine | |
---|---|---|
8212618: A low-cost, always on statistical value history The information is viewable with jcmd and printed to the hs_err file. | not accepted | 11.0.3, 12 |
The OpenJDK JVM has internal event logs. Events happening in the VM that might be relevant for error analysis are written to these logs that store the #n last entries. The event logs can be viewed by jcmd and are printed to the hs_err file.
OpenJDK | SapMachine | |
---|---|---|
8224221: add memprotect calls to event log | 13 | 13 |
8224958: add os::dll_load calls to event log | 14 | 14 |
822 | 14 | 14 |
If OpenJdk crashes, it writes a collection of basic information into a file named hs-err_<process id>.log. This information is very useful to analyze the crash post-mortem. We enrich this printout with information we found useful for SAP JVM support.
OpenJDK | SapMachine | |
---|---|---|
8204539: improve error messages in matchJavaTZ [windows] | 11 | 11 |
8220570: Additonal trace when native thread creation fails | 11.0.5, 13 | 11.0.5, 13 |
8226238: Improve error output and fix elf issues in os::dll_load | 14 | 14 |
8227441 Enhance logging when reading the fontconfig info file | 14 | 14 |
11.0.5, 13 | 11.0.5, 13 | |
11.0.5, 13 | 11.0.5, 13 |
We improve the documentation, be it Javadoc, the tools etc.
OpenJDK | SapMachine | |
---|---|---|
8200384: jcmd help output should be sorted | 11 | 11 |
8189102: All tools should support -?, -h and --help | 11 | 11 |
8203014: jcmd should output command list if no command is given | 11 | 11 |