You say you start several times. So freeing the JVM memory will probably not help. Because with every run a new JVM is started, with new memory.
But you can try to invoke the garbage collection of the JVM. This would look like the following:
import jpy
System = jpy.get_type(‘java.lang.System’)
System.gc()
When using readPixels
you should consider doing your computation linewise or in tiles and not the whole band at once.