análise de despejo de thread java

análise de despejo de thread java

Para contextualizar: temos tido alguns problemas com a coleta de lixo, onde vemos que ela demora de 15 a 40 segundos, durante esse tempo o aplicativo está em estado 'pausado'.

Aqui está o que vemos em nossos logs de coleta de dados 'Tempos: usuário = 0,04 sys = 0,00, real = 14,54 seg'

O fato de os tempos do usuário/sistema serem muito pequenos e o real ser grande, (eu acho) isso significa que o ato de coleta de lixo demorou um pouco, mas por algum motivo o aplicativo estava esperando que os threads atingissem um ponto seguro . conseguimos um despejo de thread durante uma dessas pausas e espero que alguém possa esclarecer o que estou vendo aqui:

"AsyncAppender-Worker-JVM_ASYNC" #25 daemon prio=5 os_prio=0 tid=0x00007fd8daaa5800 nid=0x4ed5 waiting on condition [0x00007fd90abf2000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000c1876d30> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObje

"RMI RenewClean-[10.12.113.3:40608]" #21 daemon prio=5 os_prio=0 tid=0x00007fd83401c800 nid=0x4ed2 in Object.wait() [0x00007fd90aff4000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)
        - locked <0x00000000c18b23a8> (a java.lang.ref.ReferenceQueue$Lock)
        at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:536)
        at java.lang.Thread.run(Thread.java:745)


"RMI Reaper" #17 prio=5 os_prio=0 tid=0x00007fd8dbfb0000 nid=0x4ece in Object.wait() [0x00007fd90b7f6000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00000000c0002d00> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)
        - locked <0x00000000c0002d00> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:158)
        at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:351)
        at java.lang.Thread.run(Thread.java:745)

informação relacionada