apache/cassandra · warning
Non-Oracle JVM detected. Some features, such as immediate u
Error message
Non-Oracle JVM detected. Some features, such as immediate unmap of compacted SSTables, may not work as intended
What it means
The checkJVMArchitecture startup check warns when the JAVA_VM_NAME system property contains neither 'HotSpot' nor 'OpenJDK', meaning Cassandra is running on a non-HotSpot-compatible JVM (e.g. IBM J9, OpenJ9, HotSpot-derived forks with different names). Certain features such as immediate unmapping of compacted SSTables via sun.misc/Cleaner APIs may not behave correctly. This is a logged warning; startup proceeds.
Source
Thrown at src/java/org/apache/cassandra/service/StartupChecks.java:604
@Override
public String name()
{
return "jvm_options";
}
@Override
public void execute(StartupChecksConfiguration configuration)
{
if (configuration.isDisabled(name()))
return;
// log warnings for different kinds of sub-optimal JVMs. tldr use 64-bit Oracle >= 1.6u32
if (!DatabaseDescriptor.hasLargeAddressSpace())
logger.warn("32bit JVM detected. It is recommended to run Cassandra on a 64bit JVM for better performance.");
String javaVmName = JAVA_VM_NAME.getString();
if (!(javaVmName.contains("HotSpot") || javaVmName.contains("OpenJDK")))
{
logger.warn("Non-Oracle JVM detected. Some features, such as immediate unmap of compacted SSTables, may not work as intended");
}
else
{
checkOutOfMemoryHandling();
}
}
/**
* Checks that the JVM is configured to handle OutOfMemoryError
*/
private void checkOutOfMemoryHandling()
{
if (JavaUtils.supportExitOnOutOfMemory(JAVA_VERSION.getString()))
{
if (!jvmOptionsContainsOneOf("-XX:OnOutOfMemoryError=", "-XX:+ExitOnOutOfMemoryError", "-XX:+CrashOnOutOfMemoryError"))
logger.warn("The JVM is not configured to stop on OutOfMemoryError which can cause data corruption."
+ " Use one of the following JVM options to configure the behavior on OutOfMemoryError: "
+ " -XX:+ExitOnOutOfMemoryError, -XX:+CrashOnOutOfMemoryError, or -XX:OnOutOfMemoryError=\"<cmd args>;<cmd args>\"");View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Switch to a HotSpot or OpenJDK-based JVM (e.g. Temurin, Corretto, Oracle JDK).
- Check java.vm.name (`java -XshowSettings:properties -version`) and if it is actually HotSpot/OpenJDK under an odd vendor name, ignore the warning.
- Pin the supported JDK version recommended by your Cassandra version in cassandra-env.sh.
- Test compaction and memory-mapped behavior if you must stay on the alternate JVM.
Example fix
// before cassandra-env.sh: JAVA_HOME=/usr/lib/jvm/ibm-java (OpenJ9) // after cassandra-env.sh: JAVA_HOME=/usr/lib/jvm/temurin-11-jdk-amd64
Defensive patterns
Strategy: validation
Validate before calling
String vmName = System.getProperty("java.vm.name", "");
boolean hotSpotLike = vmName.contains("HotSpot") || vmName.contains("OpenJDK");
if (!hotSpotLike) System.out.println("Unsupported JVM: " + vmName + "; use HotSpot/OpenJDK."); Prevention
- Standardize on Temurin/Corretto/OpenJDK builds across the fleet.
- Avoid vendor JVMs (J9, Zing) unless explicitly validated against your Cassandra version.
- Verify java.vm.name after every JDK upgrade.
- Keep JVM vendor/version in your provisioning playbook.
When it happens
Trigger: java.vm.name does not contain 'HotSpot' or 'OpenJDK' at startup; note that when this branch is taken, checkOutOfMemoryHandling() is skipped (only HotSpot/OpenJDK JVMs get the OOM-handling check).
Common situations: Running Cassandra on Eclipse OpenJ9/IBM J9 JVMs, Azul Zing, GraalVM with an unusual vm.name string, or vendor builds that rename java.vm.name.
Understand the failure class
Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.
Related errors
- 32bit JVM detected. It is recommended to run Cassandra on a
- The JVM is not configured to stop on OutOfMemoryError which
- The JVM is not configured to stop on OutOfMemoryError which
- Access is denied!
- Threshold value for gc_log*_threshold must be greater than 0
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/7d09f6dd37b31587.
Report an issue: GitHub.