no linux, o que é DATA na saída de comando superior para o aplicativo java?

1

Eu tenho uma aplicação JBoss rodando na plataforma linux, ela tem uma saída como abaixo (dados não precisos, na verdade):

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM  CODE DATA TIME+  COMMAND
 1379 root      16   0  9.7g 1.6g 1980 S  0.7  1.3 36  9.7g 0:11.03 java

possui 1,6g de memória física e possui 9,7g de dados. na verdade, o tamanho do heap é de aproximadamente 128m, conforme configurado com a JVM. minha pergunta é o que é parte de dados armazenando para aplicação java? qualquer pista? e como eu poderia otimizá-lo?

obrigado Emre

    
por Emre He 08.05.2012 / 18:19

2 respostas

1

DATA significa memória alocada pelo aplicativo usando brk(2) - isto é, estendendo o segmento de dados.

O Java tem muitas coisas diferentes que serão colocadas no segmento de dados:

  • O heap
  • Qualquer memória alocada pela camada de tempo de execução nativa (código usando a palavra-chave native )
  • Qualquer memória alocada por DLLs / bibliotecas compartilhadas que você carrega do Java usando JNI / JNA
  • Memória em que o código de bytes é carregado, interpretado e compilado pelo JIT (cache de código)
  • Estruturas de memória usadas pelo GC e outro código de suporte de tempo de execução
  • A pilha

Note que atribuir um heap de 128MB ao programa alocará mais do que isso, pois o Java também criará algumas estruturas para gerenciar o heap que não faz parte dele. Portanto, 128MB significa que você terá 128MB nos quais você pode alocar objetos Java.

    
por 08.05.2012 / 18:26
0

Esta é a quantidade de memória física dedicada a outro código que não seja o executável, também conhecido como o tamanho 'conjunto de residentes de dados' ou DRS. Geralmente, você pode consultar uma página de manual que descreve todas as colunas em detalhes. Para obter uma página de manual, digite man top .

    
por 08.05.2012 / 18:25