Java:por que vários objetos estão aparecendo com a saída do runhprof?

StackOverflow https://stackoverflow.com/questions/1197697

  •  20-09-2019
  •  | 
  •  

Pergunta

Fiquei curioso sobre a saída do runhprof?Estou principalmente preocupado com a seção de memória.Parece que existem várias entradas da mesma classe.Por que isso seria?

Existe uma maneira de fazer com que o hprof imprima quanta memória uma determinada classe (as instâncias dessa classe) ocupa na memória.Um valor para cada classe.

Além disso, quais ferramentas você usa além do 'chapéu' para analisar o resultado?

Executei o comando java com jvm arg:

-Xrunhprof:heap=sites,profundidade=4,formato=a,arquivo=prof/hprof_dump.txt

Aqui está um breve trecho da saída.Algumas classes são listadas várias vezes na saída.

SITES BEGIN (ordered by live bytes) Tue Jul 28 19:33:41 2009
          percent          live          alloc'ed  stack class
 rank   self  accum     bytes objs     bytes  objs trace name
    1 29.75% 29.75%    700080 43755 576000016 36000001 307483 java.lang.Double
      2  7.13% 36.88%    167840 5245    370432 11576 300993 clojure.lang.PersistentHashMap$LeafNode
        3  2.09% 38.98%     49296 2054     60048  2502 301295 clojure.lang.Symbol
        4  2.09% 41.07%     49200    3     49200     3 301071 char[]
        5  1.33% 42.40%     31344 1306     68088  2837 300998 clojure.lang.PersistentHashMap$BitmapIndexedNode
        6  1.10% 43.50%     25800  645     25800   645 301050 clojure.lang.Var
        7  1.05% 44.54%     24624    3     24624     3 301069 byte[]
        8  0.86% 45.40%     20184  841     49608  2067 301003 clojure.lang.PersistentHashMap$INode[]
        9  0.78% 46.18%     18304  572     58720  1835 301308 clojure.lang.PersistentList
       10  0.75% 46.93%     17568  549     17568   549 308832 java.lang.String[]
       11  0.70% 47.62%     16416    2     16416     2 301036 byte[]
Foi útil?

Solução

Analisador de memória Eclipse é excelente.Carrega o arquivo de dump muito rapidamente, produz muitos relatórios interessantes sobre o heapdump, permite consultar o dump em busca de objetos/classes usando uma linguagem semelhante a SQL.Adoro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top