Alocação de memória heap inicial JVM [duplicado]

Dec 07 2020

Especifiquei os valores -Xms e -Xmx iguais, digamos, 4 GB. Agora, quando eu inicio meu aplicativo de inicialização rápida, presumi que o sistema operacional alocará 4 GB de memória logo após iniciar o aplicativo, pois esse é o valor especificado usando o argumento -Xms. Mas quando verifiquei o conjunto residente do aplicativo e também a memória heap (usando JMX), posso ver que a memória alocada ainda é inferior a 1 GB. Isso significa que o sistema operacional não aloca necessariamente a memória especificada usando -Xms.

Desde já, obrigado.

Respostas

JurajMartinka Dec 07 2020 at 12:23

Você não disse qual sistema operacional e qual fornecedor / versão de JVM, mas freqüentemente o sistema operacional aloca as páginas preguiçosamente, ou seja, elas não estão na RAM ("residentes") a menos que necessário. Se seu aplicativo não precisa realmente dessa memória heap, ele não será residente. Além disso, há uma "política de tamanho adaptável" que pode reduzir o heap mesmo abaixo de "-Xms" se a ocupação for muito baixa:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html