Últimamente he estado investigando un proceso Java que fallaba por falta de memoria y he visto unas cuantas técnicas de monitorización bastante útiles.
Los parámetros para el control de memoria de la máquina virtual Java se pueden ajustar por línea de comandos. Hay muchos parámetros disponibles, pero cabe destacar -Xms y -Xmx. Podéis consultar las opciones más importantes en la documentación oficial.
Para tener un volcado de la heap en caso de error, son muy útiles las opciones -XX:+HeapDumpOnOutOfMemoryError y -XX:HeapDumpPath=/dir.