Two implementations of state backends are available:

RocksDB

An embedded key/value store keeps its working state on disk.

Overhead

Accesses and updates involve serialization and deserialization.

Java heap-based state backend

Keeps its working state in memory, on the Java heap.

Risk

Large amount state will cause OOM.

Conclusion

Both of these state backends are able to do asynchronous snapshotting, meaning that they can take a snapshot without impeding the ongoing stream processing.