Início: DATA = RES + pilha + o que?

0

Eu analisei o consumo de memória de um programa java no Linux Mint. Eu usei top para capturar estatísticas de memória (memória usada pelo programa e também indicadores do sistema como total_mem_used e mem_free). Os resultados foram surpreendentes:

  • "usou a memória física" ( RAM_USE_DELTA no gráfico) aumentou e "liberar memória física" (revertido RAM_FREE_DELTA no gráfico) diminuiu a mesma quantidade que o RES ( P_RSS no gráfico) aumentou - é isso que eu esperava
  • o campo DATA ( P_DATA no gráfico) (descrito em top como man "a quantidade de memória física dedicada a outro que não o código executável") foi de 150 megas acima do RES.
  • O SWAP ( SWAP_USE_DELTA no gráfico) foi zero o tempo todo
  • SHR (memória compartilhada; P_SHR no gráfico) era menor que 15 MB

A pergunta é: o que foi contado nos 150MB acima mencionados? Pilha virtual (reservada mas não alocada)? Arquivos mapeados de memória? Como escrevi antes: RES ~ RAM_USED_DELTA , então a quantidade de memória livre NÃO diminuiu em 150MB, então pode indicar memória virtual, mas seria estranho que um indicador de memória fosse uma soma de um conjunto residente e uma quantidade virtual ...

(neste gráfico, as linhas descritas *_DELTA são relativas ao início do programa, ou seja, perto do lado esquerdo, onde começa o vermelho P_RSS )

    
por rychu 10.10.2017 / 23:08

1 resposta

0

O campo DATA é a memória virtual do processo alocado para coisas que não são código executável, isto é, dados; inclui dados estáticos, pilha e memória alocada dinamicamente; juntamente com o campo CODE, está incluído na memória VIRTual total. O tamanho do RESID é a quantidade de memória virtual que está na RAM; consiste em parte do CÓDIGO, parte dos DADOS e parte de outras coisas, como arquivos mapeados na memória.

Você notará que não há relação direta entre VIRT, CODE, DATA e RES. O CÓDIGO vem do compilador; o VIRT e o DATA estão sob o controle do processo ( malloc() , free() , mmap() e assim por diante); a parte RES é controlada pelo sistema operacional.

    
por 11.10.2017 / 00:31