Gostaria de fazer uma pergunta sobre vmstat .
Eu executo um mecanismo jvm em cima do kernel linux (RHEL 7.3) e quero saber a memória real que o processo pode usar.
Eu uso vmstat para ver a quantidade de memórias disponíveis, mas não tenho certeza se o relatório inclui os bytes confirmados do heap java ou os bytes usados do heap java .
Abaixo está o exemplo de vmstat que eu uso. meu ambiente é
OS mem : 4GB
JVM Heap : 2GB
[ywatanabe@localhost tmp]$ vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 771932 2108 546772 0 0 34 81 189 161 5 1 95 0 0
0 0 0 771932 2108 546776 0 0 0 0 82 115 0 1 99 0 0
0 0 0 771932 2108 546776 0 0 0 0 74 111 0 0 100 0 0
O que a coluna livre exclui? bytes confirmados do heap java ou bytes usados do heap java ?
free
A coluna vmstat está relatando a quantidade de memória física (RAM) que não contém nada usado ou utilizável pelo sistema, para que possa ser alocado imediatamente.Os bytes confirmados do heap Java representam a quantidade de memória virtual que a JVM solicitou do sistema operacional.
Os bytes usados do heap Java representam a quantidade de memória virtual que contém dados reais (objetos).
Dado o fato de que a memória virtual pode estar presente na RAM, no disco (arquivos ou troca) ou em nenhum lugar, você não pode comparar de forma confiável o uso da RAM e da memória virtual.