There are 2 options: memory leak or misconfiguration of your JVM.
In case of former you need to find it and fix using heap analysers. Run a load test for a while on your app and then capture the heap to see which objects are eating the memory. Or configure the JVM to save heap dump on prod when OOM happens and then analyse it.
If in your heap everything seems reasonable, it means you app just consumes more memory than you configured. Just increase the heap size for the app.