¿Obtener JVM para aumentar la demanda de memoria según sea necesario hasta el tamaño del límite de VM?

Enviamos una aplicación Java cuya demanda de memoria puede variar bastante dependiendo del tamaño de los datos que está procesando. Si no establece el tamaño máximo de la VM (memoria virtual), muy a menudo la JVM se cierra con una falla del GC en big data.

Lo que nos gustaría ver es que la JVM solicite más memoria, ya que GC no puede proporcionar suficiente, hasta que se agote el total de VM disponible. por ejemplo, comience con 128Mb y aumente geométricamente (o algún otro paso) cada vez que el GC fallara.

La línea de comandos JVM ("Java") permite la configuración explícita de los tamaños máximos de VM (varios comandos -Xm *), y usted pensaría que estaría diseñado para ser adecuado. Intentamos hacer esto en un archivo .cmd que enviamos con la aplicación. Pero si elige un número específico, tiene uno de los dos comportamientos incorrectos: 1) si su número es lo suficientemente pequeño como para funcionar en la mayoría de los sistemas de destino (por ejemplo, 1Gb), no es lo suficientemente grande para big data, o 2) si lo hace muy grande, la JVM se niega a ejecutarse en aquellos sistemas cuya VM real es más pequeña que la especificada.

¿Cómo se configura Java para usar la máquina virtual disponible cuando sea necesario, sin saber ese número de antemano y sin tener que cargarlo todo en el inicio?