What are -Xms and -Xmx?
Xms256m --- > Seleciona um tamanho de heap inicial baixo da JVM para um aplicativo. Portanto, Xms especifica a quantidade de memória, em megabytes, que será usada para iniciar o servidor.
Xmx512m --- > Seleciona o tamanho máximo de heap da JVM permitido para um aplicativo. Portanto, Xmx especifica a quantidade máxima de memória, em megabytes, que será dedicada à execução do servidor.
What values should i put for them in-order to avoid JavaHeapSpace exception?
Isso não depende da configuração do seu sistema, mas do tipo de aplicativo para o qual você está direcionando a execução. Então, todos esses são detalhes desnecessários fornecidos por você. Você deve se importar se sua JVM é de 32 bits ou a de 64 bits. Tipo, eu tenho essa configuração da JVM para a execução dos meus aplicativos locais de natureza mínima --- > -J-Xms100m -J-Xmx200m -J-XX:PermSize=100m
.
What could be the maximum and minimum values for them?
Isso é limitado pela natureza do seu sistema e da JVM.
O limite máximo de heap teórico para a JVM de 32 bits é 4G. Devido a várias restrições adicionais, como swap disponível, uso de espaço de endereço do kernel, fragmentação de memória e sobrecarga de VM, na prática, o limite pode ser muito menor. Na maioria dos sistemas Windows modernos de 32 bits, o tamanho máximo do heap varia de 1,4 G a 1,6 G. Nos kernels Solaris de 32 bits, o espaço de endereço é limitado a 2G. Em sistemas operacionais de 64 bits que executam a VM de 32 bits, o tamanho máximo do heap pode ser maior, aproximando-se do 4G em muitos sistemas Solaris.
Se o seu aplicativo exigir um heap muito grande, você deverá usar uma VM de 64 bits em uma versão do sistema operacional que suporte aplicativos de 64 bits.
Verifique este link para saber mais sobre ele