Por favor, explique o uso de Xms
e Xmx
parâmetros nas JVMs. Quais são os valores padrão para eles?
java
memory-management
parameters
jvm
Pankaj
fonte
fonte
-Xmx128m -Xms64m
pode pico em torno275m
RES mem, mas quando se utiliza-Xmx128m -Xms128m
pode pico em torno550m
RES mem Usando Java 8 Melhor coisa é de salientar a GC e olhar para o que acontece ...Respostas:
O sinalizador
Xmx
especifica o conjunto máximo de alocação de memória para uma Java virtual machine (JVM), enquantoXms
especifica o conjunto inicial de alocação de memória.Isso significa que sua JVM será iniciada com
Xms
quantidade de memória e poderá usar o máximo deXmx
quantidade de memória. Por exemplo, iniciar uma JVM como a seguir, iniciará com 256 MB de memória e permitirá que o processo use até 2048 MB de memória:O sinalizador de memória também pode ser especificado em tamanhos diferentes, como kilobytes, megabytes e assim por diante.
O
Xms
sinalizador não tem valor padrão eXmx
normalmente possui um valor padrão de 256 MB. Um uso comum para esses sinalizadores é quando você encontra umjava.lang.OutOfMemoryError
.Ao usar essas configurações, lembre-se de que essas configurações são para o heap da JVM e que a JVM pode / utilizará mais memória do que apenas o tamanho alocado para o heap. Da documentação da Oracle :
fonte
OutOfMemoryError
isso ocorrerá.-Xms256m
é "256 MiB", não "256 MB", pois utiliza potências binárias em vez de potências de dez. Veja en.wikipedia.org/wiki/Binary_prefix . Além disso, porque algum espaço inutilizável é reservado para uma piscina extra de espaço Survivor, a quantidade de memória realmente disponível de acordo comRuntime.getRuntime().maxMemory()
é menor do que o valor especificado através de -XmxExecute o comando
java -X
e você obterá uma lista de todas as-X
opções:As opções -X não são padrão e estão sujeitas a alterações sem aviso prévio.
Espero que isso ajude você a entender
Xms
,Xmx
assim como muitas outras coisas que mais importam. :)fonte
Você pode especificá-lo em seu IDE. Por exemplo, para Eclipse em Executar configurações → argumentos da VM . Você pode entrar
-Xmx800m -Xms500m
comofonte
A questão em si já foi abordada acima. Apenas adicionando parte dos valores padrão.
Conforme http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html
O valor padrão de Xmx dependerá da plataforma e da quantidade de memória disponível no sistema.
fonte
-Xms tamanho de heap inicial para a inicialização, no entanto, durante o processo de trabalho, o tamanho de heap pode ser menor que -Xms devido à inatividade dos usuários ou iterações de GC. Esse não é um tamanho mínimo necessário de heap.
-Xmx tamanho máximo de heap
fonte