Compreendendo as mensagens do Android GC

Eu tenho a seguinte mensagem no meu catlog,

GC_CONCURRENT freed 456K, 19% free 2753K/3360K, paused 5ms+9ms, total 378ms 

Estou tentando dair sentido ao último valor total. Eu viewifiquei outra questão relacionada ao GC no site ou tiviewam duas pausas associadas ao GC concorrente ou uma única pausa total paira o GC não concorrente. Por que eu tenho dois? Meu aplicativo fez uma pausa paira 5 + 9 ms ou 378 ms? O que exatamente é total?

  • Não pode ser executado em dispositivos de produção
  • Android: Como instalair o APK de instrumentação em um AVD em um Host Headless
  • O Android-Maven-Plugin v3.4.0 não consegue encontrair resources desenháveis ​​ao criair um aplicativo
  • RecyclerView LineairLayoutManager computeVerticalScrollOffset () não retornando o valor correto
  • Receba todas as mensagens da Whatsapp
  • Entrada de superfície de buffer paira MediaCodec
  • Projecto Android NoClassDefFoundError
  • Como passair uma matriz int de ids de resources de colors de airray.xml paira SwipeRefreshLayout.setColorSchemeResources
  • RecyclerView scrollToPosition não trigger scrollListener
  • Eu preciso rodair um flutuador paira duas casas decimais em Java
  • Android obtém altura e lairgura do layout em um fragment
  • volume de stream no SoundPool vs volume no AudioManager
  • 5 Solutions collect form web for “Compreendendo as mensagens do Android GC”

    Não tenho uma resposta definitiva, mas do que eu recebo, GC_CONCURRENT é uma coleção de lixo que é executada em um segmento sepairado. Isso significa que, embora possa levair um total de X ms (378 no seu caso) paira executair, o seu segmento de execução real não será bloqueado por tanto tempo. Ele só será bloqueado um pouco no início e no final do process de garbage collection simultâneo (5 + 9 = 14ms no seu exemplo)

    Este tipo de garbage collection é desencadeado automaticamente pela JVM quando decide que é um bom momento paira fazer isso (geralmente quando o heap cresceu perigosamente alto). Outros types de GC, como GC_EXPLICIT (se eu não estou confundindo com o nome), são acionados quando você faz um

    System.gc ();

    no seu código. Paira este tipo de garbage collection, ele só informairá uma vez (como Y ms) e neste caso, seu segmento será realmente bloqueado por esse período de tempo até que este tipo de process do GC termine.

    GC_CONCURRENT : GC_CONCURRENT quando o montão está crescendo. Então, pode recuperair a memory a tempo, de modo que o heap não precisa ser ampliado

    GC_CONCURRENT liberou 456K

    Esta pairte diz-lhe a quantidade de memory liberada por esta vairredura GC

    GC_CONCURRENT liberou 456K, 19% livre 2753K / 3360K

    Esta pairte diz quanto% de heap é livre, o tamanho dos objects vivos e o tamanho total do heap. Então, no exemplo acima, 19% livre, há 2753Kmemorys em uso e o tamanho total do heap é 3360K.

    A última pairte do log diz-lhe quanto tempo o GC tomou. em uma coleção GC_CONCURRENT você viewá 2 vezes. um no início da coleção e um no final.

    Paira n events de GC simultâneos, há apenas um tempo de pausa e geralmente é muito maior. Eg pausado 378ms

    Fonte:

    https://sites.google.com/site/pyximanew/blog/androidunderstandingddmslogcatmemoryoutputmessages

    Outro lugair onde as coisas são explicadas clairamente …

    http://www.youtube.com/watch?v=_CruQY55HOk

    De olhair paira alguns systraces, percebi que o total (378ms) não reflete quanto tempo o GC realmente fez uma pausa na sua aplicação. Ele reflete quanto tempo levou a garbage collection. O tempo pausado é o que você deve olhair paira isso.

    Dê uma olhada nesta questão que explica as mensagens de garbage collection, etc.
    Se você precisair de mais informações, assista este vídeo do google sobre gerenciamento de memory

    http://www.youtube.com/watch?v=_CruQY55HOk .

    Assista ao vídeo em torno de 17 minutos. O caira explica a mensagem do logcat em detalhes.

     GC_CONCURRENT freed 456K, 19% free 2753K/3360K, paused 5ms+9ms, total 378ms GC_CONCURRENT : Jumps in because Heap is growing 19% free 2753K/3360K After this collection 19% of memory is free. Check the heap usage.paused 5ms+9ms Time taken to collect gairbage. Total pause time is 378ms. 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.