A memória trocada pode ser lida diretamente pelo java?

1

Quando o kernel troca coisas em disco, esses dados podem ser subsequentemente lidos pelo processo diretamente da troca? ou deve ser absolutamente colocado de volta no RAM físico (gerando assim a atividade de so em vmstat)

Eu tenho um processo java que parece ter muitos dados em swap ( link ) E quando eu executo, é muito lento, mas não vejo atividade alguma.

Ao reiniciar o processo, ele é muito rápido novamente e os smaps agora listam 0 bytes no Swap.

Informações do Vmstat: link

Obrigado,

    
por Bob 01.02.2017 / 16:18

1 resposta

0

Processos, incluindo java, não estão cientes de onde sua memória está localizada. Tudo o que o java sabe é que tentou acessar a localização da memória 0x00234525. Quando o kernel visualizar o acesso, ele retornará o valor da RAM ou paginará a memória do swap para a RAM e retornará o valor da RAM. A página deve ser lida na RAM antes de poder ser acessada.

Dito isto, uma única linha de vmstat mostra a média durante todo o tempo de atividade não é muito útil. Execute vmstat 5 enquanto o processo estiver em execução para ver os dados ativos.

    
por 01.02.2017 / 21:04

Tags