> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Java version compatibility

Atoti Server requires Java 21.

## Memory Monitoring

Please note that to be able to be compatible with Java 17+, we are no longer reporting the off-heap memory allocated with java's internal MBeans.
Instead, you can use the newly created MBeans located in `DirectMemoryMonitoring` for the information you wanted regarding memory consumption from Atoti.
Additionally, [MAC](https://github.com/activeviam/mac) can be used for deeper investigations.

## JVM Options

### Apache Arrow access to `java.nio`

Any Atoti Server feature that exchanges data through Apache Arrow requires the following JVM option, because the Arrow memory allocator accesses internals of `java.nio` that have been encapsulated since JDK 17:

```
--add-opens java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED
```

This option is required when you:

* Use the [GAQ REST API](../rest-api/gaq_rest_api) or the [Continuous GAQ REST API](../rest-api/continuous_gaq_rest_api), which return query results in Apache Arrow IPC format.
* Use Arrow as a data source or as an export format.

### Other modules

The list above is not exhaustive: we don't guarantee that it is enough to run Atoti Server.
Our dependencies may require additional `--add-opens`.
Moving forward JDK versions, if you see in a stack trace that module `XXX` does not open `YYY` to an unnamed module, it means you are missing the JVM option `--add-opens XXX/YYY=ALL-UNNAMED`.
