{"record":{"id":"b7ebe512b17ed0a8","repo":"apache/cassandra","slug":"32bit-jvm-detected-it-is-recommended-to-run-cass","errorCode":null,"errorMessage":"32bit JVM detected.  It is recommended to run Cassandra on a 64bit JVM for better performance.","messagePattern":"32bit JVM detected\\.  It is recommended to run Cassandra on a 64bit JVM for better performance\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/java/org/apache/cassandra/service/StartupChecks.java","lineNumber":599,"sourceCode":"        }\n    };\n\n    public static final StartupCheck inspectJvmOptions = new StartupCheck()\n    {\n        @Override\n        public String name()\n        {\n            return \"jvm_options\";\n        }\n\n        @Override\n        public void execute(StartupChecksConfiguration configuration)\n        {\n            if (configuration.isDisabled(name()))\n                return;\n            // log warnings for different kinds of sub-optimal JVMs.  tldr use 64-bit Oracle >= 1.6u32\n            if (!DatabaseDescriptor.hasLargeAddressSpace())\n                logger.warn(\"32bit JVM detected.  It is recommended to run Cassandra on a 64bit JVM for better performance.\");\n\n            String javaVmName = JAVA_VM_NAME.getString();\n            if (!(javaVmName.contains(\"HotSpot\") || javaVmName.contains(\"OpenJDK\")))\n            {\n                logger.warn(\"Non-Oracle JVM detected.  Some features, such as immediate unmap of compacted SSTables, may not work as intended\");\n            }\n            else\n            {\n                checkOutOfMemoryHandling();\n            }\n        }\n\n        /**\n         * Checks that the JVM is configured to handle OutOfMemoryError\n         */\n        private void checkOutOfMemoryHandling()\n        {\n            if (JavaUtils.supportExitOnOutOfMemory(JAVA_VERSION.getString()))","sourceCodeStart":581,"sourceCodeEnd":617,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/service/StartupChecks.java#L581-L617","documentation":"At startup, Cassandra's checkJVMArchitecture startup check warns when the JVM does not have a large address space, i.e. a 32-bit JVM is running. Cassandra relies on memory-mapped SSTables (mmap), which a 32-bit address space severely limits, so 64-bit is strongly recommended. This is a logged warning, not a thrown exception; startup continues.","triggerScenarios":"Running Cassandra on a 32-bit JVM so that DatabaseDescriptor.hasLargeAddressSpace() returns false during the startup checks phase (StartupChecks.execute).","commonSituations":"Deploying on old 32-bit OS/JVM images, embedded or minimal containers built with 32-bit Java, or accidentally installing the i386 JRE on a 64-bit host.","solutions":["Install and run a 64-bit JVM (verify with `java -version` showing 64-Bit Server VM).","Reinstall the OS/JRE as amd64/x86_64 if the OS itself is 32-bit.","Set JAVA_HOME to the 64-bit JDK used by the Cassandra startup scripts.","Acknowledge and ignore the warning only for throwaway/test environments."],"exampleFix":"// before (32-bit JVM)\njava version \"1.8.0_392\" Java HotSpot(TM) Client VM\n// after\njava version \"1.8.0_392\" Java HotSpot(TM) 64-Bit Server VM","handlingStrategy":"validation","validationCode":"String arch = System.getProperty(\"os.arch\");\nString vmBits = System.getProperty(\"sun.arch.data.model\", System.getProperty(\"com.ibm.vm.bitmode\", \"\"));\nif (!\"64\".equals(vmBits) || arch.contains(\"86\") && !arch.contains(\"64\")) {\n    System.out.println(\"32-bit JVM detected; install a 64-bit JDK before starting Cassandra.\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always provision 64-bit OS + JDK images for Cassandra nodes.","Add a pre-start script asserting `java -version` output contains '64-Bit'.","Pin JAVA_HOME in cassandra-env.sh to the 64-bit JDK path.","Check sun.arch.data.model in CI before deployment."],"tags":["jvm","startup-check","performance"],"backgroundTag":"unsupported-platform","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}