Hi, Ignite always stores data off-heap. Enabling on-heap caching <https://apacheignite.readme.io/docs/evictions#section-java-heap-cache> just turns Java heap into a cache for the off-heap memory, allowing you to configure eviction policies specific for such a heap cache.
I believe the idea is that in some cases accessing on-heap is faster than accessing off-heap, although I never saw any benchmarks or recommendations what data access scenarios would benefit from the on-heap caching. Remember that storing data on-heap negatively impacts GC. Maybe community will help. You can also benchmark your use case with on-heap caching and without it and share results with the community.