작성
·
261
0
https://github.com/openjdk/jdk/pull/17221
이런 내용이 있네요. -Djdk.tracePinnedThreads 보다 JFR 을 권장하는 것 같습니다.
답변 3
1
덧붙이자면, -Djdk.tracePinnedThreads와 open jdk 23 이하에서 제공하는 JFR 이벤트는 성격이 다릅니다.
-Djdk.tracePinnedThreads는 pinning이 일어나자 마자 stack trace가 찍힙니다. 하지만 jdk 21 이하에서 제공하는 JFR 이벤트는 후행 이벤트[1]입니다. pinning이 일어난 로직이 끝나야 이벤트가 출력됩니다. open jdk 24 이상부터는 -Djdk.tracePinnedThreads를 JFR로 완전히 대체할 수 있다고 해야 더 명확할 것 같습니다[2]. 물론 작성자님이 올리신 것 처럼 -Djdk.tracePinnedThreads를 권장하진 않습니다[3]. 다만 이를 대체할 기능이 크게 없네요😅
[1]
jdk.VirtualThreadPinned
indicates that a virtual thread was parked while pinned, i.e., without releasing its platform thread (see above). This event is enabled by default, with a threshold of 20ms.
https://openjdk.org/jeps/444
[2]
A
jdk.VirtualThreadPinned
event is recorded by JDK Flight Recorder (JFR) whenever a virtual thread blocks inside asynchronized
method. This event has been useful to identify code that would benefit from being changed to make less use ofsynchronized
methods and statements, to not block while inside such constructs, or to replace such constructs withjava.util.concurrent
locks.
https://openjdk.org/jeps/491
[3]
As regards jdk.tracePinnedThreads. We want this system property to go away, it's just unfortunate that it seems to be widely used.
https://github.com/openjdk/jdk/pull/17221#issuecomment-1874211812
0
0