맥락: 가비지 수집과 관련하여 15~40초가 소요되는 몇 가지 문제가 발생했으며, 이 시간 동안 애플리케이션은 '일시 중지' 상태입니다.
가비지 수집 로그 'Times: user=0.04 sys=0.00, real=14.54 sec'에서 볼 수 있는 내용은 다음과 같습니다.
사용자/sys 시간이 매우 작고 실제 시간이 크다는 사실은 가비지 수집 작업에 짧은 시간이 걸렸지만 어떤 이유로 응용 프로그램이 스레드가 안전한 지점에 도달할 때까지 기다리고 있었음을 의미합니다. . 우리는 이러한 일시 중지 중 하나에서 스레드 덤프를 얻었으며 누군가가 내가 여기서 보고 있는 내용에 대해 약간의 정보를 제공할 수 있기를 바랍니다.
"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)