no Linux, o que são DADOS na saída do comando superior para aplicativos Java?

no Linux, o que são DADOS na saída do comando superior para aplicativos Java?

Eu tenho um aplicativo JBoss em execução na plataforma Linux, ele tem saída superior 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 no total e 9,7g de parte de DADOS. na verdade, o tamanho do heap é de aproximadamente 128m conforme configurado com JVM. minha pergunta é o que a parte DATA está armazenando para aplicativos Java? qualquer pista? e como eu poderia otimizá-lo?

obrigado, Emre

Responder1

DATAsignifica memória alocada pelo aplicativo usando brk(2)- ou seja, estendendo o segmento de dados.

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

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

Observe que fornecer um heap de 128 MB a um programa alocará mais do que isso porque Java também criará algumas estruturas para gerenciar o heap que não fazem parte dele. Portanto, 128 MB significa que você terá 128 MB nos quais poderá alocar objetos Java.

Responder2

Esta é a quantidade de memória física dedicada a código diferente do executável, também conhecido como tamanho do 'conjunto residente 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.

informação relacionada