O campo "usado" em top
reflete a quantidade total de RAM utilizada, incluindo processos, buffers de arquivos e cache. Mas o número RES mostra apenas a quantidade de RAM usada por um processo, exclusiva dos buffers de arquivo.
Para ver realmente o quanto de RAM está sendo usado sem os buffers, use o comando free
e observe a linha -/+ buffers/cache
. O número na coluna "usado" mostra a quantidade de RAM que está sendo usada pelos processos.
Veja um exemplo:
$ free
total used free shared buffers cached
Mem: 2057196 1812352 244844 0 344768 833660
-/+ buffers/cache: 633924 1423272
Swap: 2097148 0 2097148
Esta saída mostra que o sistema tem 2GB de RAM, dos quais 1.8GB estão sendo usados. No entanto, 344 MB disso são usados pelos buffers e 833 MB são usados pelo cache. Subtrair isso deixa apenas 633MB sendo usado pelos processos e pelo kernel.
Execute o comando free
antes e depois de iniciar seu aplicativo Java para ter uma ideia melhor do que está acontecendo.
Editar: removeu referências à memória do kernel, que não são relatadas por essas ferramentas.