Comments (8)
I am not able to reproduce it. Where is 'heap dump contains virtual threads'?
from visualvm.
from visualvm.
I've attached sample hprof file which contains virtual threads
from visualvm.
Thanks, I will take a look.
from visualvm.
I fixed NPE. In attached heap dump I now see two entries for Virtual thread [#29]/runnable@ForkJoinPool-1-worker-1
. The first is in the middle with stack trace and the second is the last without stack trace. This look strange to me. Can you confirm that the attached heap dump is correct?
"main" prio=5 tid=1 TIMED_WAITING
at java.lang.Thread.sleepNanos0(Native Method)
at java.lang.Thread.sleepNanos(Thread.java:491)
local variable: java.lang.Thread#2
at java.lang.Thread.sleep(Thread.java:522)
at jdk.test.lib.apps.LingeredApp.main(LingeredApp.java:630)
local variable: java.lang.String[]#22
local variable: java.lang.String#2561
local variable: sun.nio.fs.WindowsPath#1
local variable: jdk.test.lib.apps.LingeredApp$SteadyStateLock#1
local variable: jdk.test.lib.apps.LingeredApp$SteadyStateLock#1
at MyTest2Targ.runTest(MyTest2.java:148)
local variable: MyTest2Targ#1
local variable: java.lang.String[]#22
local variable: MyTest2Targ$VthreadMounted#1
local variable: MyTest2Targ$Pthread#1
at MyTest2Targ.main(MyTest2.java:159)
local variable: java.lang.String[]#22
local variable: MyTest2Targ#1
"Reference Handler" daemon prio=10 tid=9 RUNNABLE
at java.lang.ref.Reference.waitForReferencePendingList(Native Method)
at java.lang.ref.Reference.processPendingReferences(Reference.java:246)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208)
local variable: java.lang.ref.Reference$ReferenceHandler#1
"Finalizer" daemon prio=8 tid=10 WAITING
at java.lang.Object.wait0(Native Method)
at java.lang.Object.wait(Object.java:375)
local variable: java.lang.ref.NativeReferenceQueue$Lock#1
at java.lang.Object.wait(Object.java:348)
local variable: java.lang.ref.NativeReferenceQueue$Lock#1
at java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48)
local variable: java.lang.ref.NativeReferenceQueue#1
at java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158)
local variable: java.lang.ref.NativeReferenceQueue#1
at java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89)
local variable: java.lang.ref.NativeReferenceQueue#1
local variable: java.lang.ref.NativeReferenceQueue$Lock#1
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173)
local variable: java.lang.ref.Finalizer$FinalizerThread#1
local variable: java.lang.System$2#1
"Signal Dispatcher" daemon prio=9 tid=11 RUNNABLE
"Attach Listener" daemon prio=5 tid=12 RUNNABLE
"Notification Thread" daemon prio=9 tid=19 RUNNABLE
"Common-Cleaner" daemon prio=8 tid=20 TIMED_WAITING
at jdk.internal.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269)
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject#6
local variable: jdk.internal.misc.InnocuousThread#1
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1847)
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject#6
local variable: java.util.concurrent.TimeUnit#3
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode#1
at java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71)
local variable: java.lang.ref.ReferenceQueue#4
at java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143)
local variable: java.lang.ref.ReferenceQueue#4
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218)
local variable: java.lang.ref.ReferenceQueue#4
at jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140)
local variable: jdk.internal.ref.CleanerImpl#1
local variable: jdk.internal.misc.InnocuousThread#1
local variable: jdk.internal.misc.InnocuousThread#1
at java.lang.Thread.runWith(Thread.java:1583)
local variable: jdk.internal.misc.InnocuousThread#1
local variable: class java.lang.Thread
local variable: jdk.internal.ref.CleanerImpl#1
at java.lang.Thread.run(Thread.java:1570)
local variable: jdk.internal.misc.InnocuousThread#1
local variable: jdk.internal.ref.CleanerImpl#1
local variable: class java.lang.Thread
at jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186)
local variable: jdk.internal.misc.InnocuousThread#1
Virtual Thread [#29]/runnable@ForkJoinPool-1-worker-1
at MyTest2Targ$VthreadMounted.run(MyTest2.java:99)
local variable: MyTest2Targ$VthreadMounted#1
local variable: MyTest2Targ$VThreadMountedReferenced#1
at java.lang.Thread.runWith(Thread.java:1583)
local variable: java.lang.VirtualThread#6
local variable: class java.lang.Thread
local variable: MyTest2Targ$VthreadMounted#1
at java.lang.VirtualThread.run(VirtualThread.java:321)
local variable: java.lang.VirtualThread#6
local variable: MyTest2Targ$VthreadMounted#1
local variable: class java.lang.Thread
at java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:201)
local variable: java.lang.VirtualThread$VThreadContinuation$1#6
at jdk.internal.vm.Continuation.enter0(Continuation.java:320)
local variable: java.lang.VirtualThread$VThreadContinuation#6
at jdk.internal.vm.Continuation.enter(Continuation.java:312)
local variable: java.lang.VirtualThread$VThreadContinuation#6
"ForkJoinPool-1-worker-1" daemon prio=5 tid=22 RUNNABLE
at jdk.internal.vm.Continuation.run(Continuation.java:248)
local variable: java.lang.VirtualThread$VThreadContinuation#6
local variable: jdk.internal.misc.CarrierThread#1
at java.lang.VirtualThread.runContinuation(VirtualThread.java:237)
local variable: java.lang.VirtualThread#6
at java.lang.VirtualThread$$Lambda+0x00000248a6057a28.run(<unresolved string 0x0>)
local variable: java.lang.VirtualThread$$Lambda+0x00000248a6057a28#6
at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(ForkJoinTask.java:1726)
local variable: java.util.concurrent.ForkJoinTask$RunnableExecuteAction#1
at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(ForkJoinTask.java:1717)
local variable: java.util.concurrent.ForkJoinTask$RunnableExecuteAction#1
at java.util.concurrent.ForkJoinTask$InterruptibleTask.exec(ForkJoinTask.java:1641)
local variable: java.util.concurrent.ForkJoinTask$RunnableExecuteAction#1
local variable: jdk.internal.misc.CarrierThread#1
local variable: java.util.concurrent.ForkJoinTask$RunnableExecuteAction#1
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
local variable: java.util.concurrent.ForkJoinTask$RunnableExecuteAction#1
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#2
local variable: java.util.concurrent.ForkJoinTask$RunnableExecuteAction#1
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#1
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
local variable: java.util.concurrent.ForkJoinPool#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue[]#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#1
local variable: java.util.concurrent.ForkJoinTask[]#1
local variable: java.util.concurrent.ForkJoinTask$RunnableExecuteAction#1
local variable: java.util.concurrent.ForkJoinTask$RunnableExecuteAction#1
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
local variable: java.util.concurrent.ForkJoinPool#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#2
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
local variable: jdk.internal.misc.CarrierThread#1
local variable: java.util.concurrent.ForkJoinPool#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#2
"ForkJoinPool-1-worker-2" daemon prio=5 tid=23 WAITING
at jdk.internal.misc.Unsafe.park(Native Method)
at java.util.concurrent.ForkJoinPool.awaitWork(ForkJoinPool.java:2145)
local variable: java.util.concurrent.ForkJoinPool#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#3
local variable: java.util.concurrent.ForkJoinPool$WorkQueue[]#2
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2036)
local variable: java.util.concurrent.ForkJoinPool#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#3
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
local variable: jdk.internal.misc.CarrierThread#2
local variable: java.util.concurrent.ForkJoinPool#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#3
"ForkJoinPool-1-worker-3" daemon prio=5 tid=24 WAITING
at jdk.internal.misc.Unsafe.park(Native Method)
at java.util.concurrent.ForkJoinPool.awaitWork(ForkJoinPool.java:2145)
local variable: java.util.concurrent.ForkJoinPool#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#4
local variable: java.util.concurrent.ForkJoinPool$WorkQueue[]#2
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2036)
local variable: java.util.concurrent.ForkJoinPool#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#4
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
local variable: jdk.internal.misc.CarrierThread#3
local variable: java.util.concurrent.ForkJoinPool#2
local variable: java.util.concurrent.ForkJoinPool$WorkQueue#4
"Thread-0" prio=5 tid=30 WAITING
at jdk.internal.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:221)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.lang.Thread#1
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#6
local variable: java.lang.Thread#1
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#5
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#6
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099)
local variable: java.util.concurrent.CountDownLatch$Sync#1
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230)
local variable: java.util.concurrent.CountDownLatch#1
at MyTest2Targ.awaitToStop(MyTest2.java:121)
local variable: MyTest2Targ#1
at MyTest2Targ$Pthread.run(MyTest2.java:111)
local variable: MyTest2Targ$Pthread#1
local variable: MyTest2Targ$PThreadReferenced#1
at java.lang.Thread.runWith(Thread.java:1583)
local variable: java.lang.Thread#1
local variable: class java.lang.Thread
local variable: MyTest2Targ$Pthread#1
at java.lang.Thread.run(Thread.java:1570)
local variable: java.lang.Thread#1
local variable: MyTest2Targ$Pthread#1
local variable: class java.lang.Thread
"SteadyStateThread" prio=5 tid=31 BLOCKED
at jdk.test.lib.apps.LingeredApp.steadyState(LingeredApp.java:567)
local variable: jdk.test.lib.apps.LingeredApp$SteadyStateLock#1
local variable: jdk.test.lib.apps.LingeredApp$SteadyStateLock#1
at jdk.test.lib.apps.LingeredApp$1.run(LingeredApp.java:573)
local variable: jdk.test.lib.apps.LingeredApp$1#1
Virtual Thread [#21]/parking
at jdk.internal.vm.Continuation.yield0(Continuation.java:360)
local variable: java.lang.VirtualThread$VThreadContinuation#1
local variable: jdk.internal.vm.ContinuationScope#1
at jdk.internal.vm.Continuation.yield(Continuation.java:351)
local variable: jdk.internal.vm.ContinuationScope#1
local variable: java.lang.VirtualThread$VThreadContinuation#1
local variable: java.lang.VirtualThread$VThreadContinuation#1
at java.lang.VirtualThread.yieldContinuation(VirtualThread.java:441)
local variable: java.lang.VirtualThread#1
at java.lang.VirtualThread.park(VirtualThread.java:588)
local variable: java.lang.VirtualThread#1
at java.lang.System$2.parkVirtualThread(System.java:2643)
local variable: java.lang.System$2#1
local variable: java.lang.VirtualThread#1
local variable: java.lang.VirtualThread#1
at jdk.internal.misc.VirtualThreads.park(VirtualThreads.java:54)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:219)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.lang.VirtualThread#1
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#1
local variable: java.lang.VirtualThread#1
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode#1
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#1
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099)
local variable: java.util.concurrent.CountDownLatch$Sync#1
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230)
local variable: java.util.concurrent.CountDownLatch#1
at MyTest2Targ.awaitToStop(MyTest2.java:121)
local variable: MyTest2Targ#1
at MyTest2Targ$VthreadUnmounted.run(MyTest2.java:86)
local variable: MyTest2Targ$VthreadUnmounted#1
local variable: MyTest2Targ$VThreadUnmountedReferenced#1
at java.lang.Thread.runWith(Thread.java:1583)
local variable: java.lang.VirtualThread#1
local variable: class java.lang.Thread
local variable: MyTest2Targ$VthreadUnmounted#1
at java.lang.VirtualThread.run(VirtualThread.java:321)
local variable: java.lang.VirtualThread#1
local variable: MyTest2Targ$VthreadUnmounted#1
local variable: class java.lang.Thread
at java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:201)
local variable: java.lang.VirtualThread$VThreadContinuation$1#1
at jdk.internal.vm.Continuation.enter0(Continuation.java:320)
local variable: java.lang.VirtualThread$VThreadContinuation#1
at jdk.internal.vm.Continuation.enter(Continuation.java:312)
local variable: java.lang.VirtualThread$VThreadContinuation#1
Virtual Thread [#25]/parking
at jdk.internal.vm.Continuation.yield0(Continuation.java:360)
local variable: java.lang.VirtualThread$VThreadContinuation#2
local variable: jdk.internal.vm.ContinuationScope#1
at jdk.internal.vm.Continuation.yield(Continuation.java:351)
local variable: jdk.internal.vm.ContinuationScope#1
local variable: java.lang.VirtualThread$VThreadContinuation#2
local variable: java.lang.VirtualThread$VThreadContinuation#2
at java.lang.VirtualThread.yieldContinuation(VirtualThread.java:441)
local variable: java.lang.VirtualThread#2
at java.lang.VirtualThread.park(VirtualThread.java:588)
local variable: java.lang.VirtualThread#2
at java.lang.System$2.parkVirtualThread(System.java:2643)
local variable: java.lang.System$2#1
local variable: java.lang.VirtualThread#2
local variable: java.lang.VirtualThread#2
at jdk.internal.misc.VirtualThreads.park(VirtualThreads.java:54)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:219)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.lang.VirtualThread#2
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#2
local variable: java.lang.VirtualThread#2
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#1
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#2
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099)
local variable: java.util.concurrent.CountDownLatch$Sync#1
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230)
local variable: java.util.concurrent.CountDownLatch#1
at MyTest2Targ.awaitToStop(MyTest2.java:121)
local variable: MyTest2Targ#1
at MyTest2Targ$VthreadUnmounted.run(MyTest2.java:86)
local variable: MyTest2Targ$VthreadUnmounted#2
local variable: MyTest2Targ$VThreadUnmountedReferenced#2
at java.lang.Thread.runWith(Thread.java:1583)
local variable: java.lang.VirtualThread#2
local variable: class java.lang.Thread
local variable: MyTest2Targ$VthreadUnmounted#2
at java.lang.VirtualThread.run(VirtualThread.java:321)
local variable: java.lang.VirtualThread#2
local variable: MyTest2Targ$VthreadUnmounted#2
local variable: class java.lang.Thread
at java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:201)
local variable: java.lang.VirtualThread$VThreadContinuation$1#2
at jdk.internal.vm.Continuation.enter0(Continuation.java:320)
local variable: java.lang.VirtualThread$VThreadContinuation#2
at jdk.internal.vm.Continuation.enter(Continuation.java:312)
local variable: java.lang.VirtualThread$VThreadContinuation#2
Virtual Thread [#26]/parking
at jdk.internal.vm.Continuation.yield0(Continuation.java:360)
local variable: java.lang.VirtualThread$VThreadContinuation#3
local variable: jdk.internal.vm.ContinuationScope#1
at jdk.internal.vm.Continuation.yield(Continuation.java:351)
local variable: jdk.internal.vm.ContinuationScope#1
local variable: java.lang.VirtualThread$VThreadContinuation#3
local variable: java.lang.VirtualThread$VThreadContinuation#3
at java.lang.VirtualThread.yieldContinuation(VirtualThread.java:441)
local variable: java.lang.VirtualThread#3
at java.lang.VirtualThread.park(VirtualThread.java:588)
local variable: java.lang.VirtualThread#3
at java.lang.System$2.parkVirtualThread(System.java:2643)
local variable: java.lang.System$2#1
local variable: java.lang.VirtualThread#3
local variable: java.lang.VirtualThread#3
at jdk.internal.misc.VirtualThreads.park(VirtualThreads.java:54)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:219)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.lang.VirtualThread#3
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#3
local variable: java.lang.VirtualThread#3
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#2
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#3
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099)
local variable: java.util.concurrent.CountDownLatch$Sync#1
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230)
local variable: java.util.concurrent.CountDownLatch#1
at MyTest2Targ.awaitToStop(MyTest2.java:121)
local variable: MyTest2Targ#1
at MyTest2Targ$VthreadUnmounted.run(MyTest2.java:86)
local variable: MyTest2Targ$VthreadUnmounted#3
local variable: MyTest2Targ$VThreadUnmountedReferenced#3
at java.lang.Thread.runWith(Thread.java:1583)
local variable: java.lang.VirtualThread#3
local variable: class java.lang.Thread
local variable: MyTest2Targ$VthreadUnmounted#3
at java.lang.VirtualThread.run(VirtualThread.java:321)
local variable: java.lang.VirtualThread#3
local variable: MyTest2Targ$VthreadUnmounted#3
local variable: class java.lang.Thread
at java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:201)
local variable: java.lang.VirtualThread$VThreadContinuation$1#3
at jdk.internal.vm.Continuation.enter0(Continuation.java:320)
local variable: java.lang.VirtualThread$VThreadContinuation#3
at jdk.internal.vm.Continuation.enter(Continuation.java:312)
local variable: java.lang.VirtualThread$VThreadContinuation#3
Virtual Thread [#27]/parking
at jdk.internal.vm.Continuation.yield0(Continuation.java:360)
local variable: java.lang.VirtualThread$VThreadContinuation#4
local variable: jdk.internal.vm.ContinuationScope#1
at jdk.internal.vm.Continuation.yield(Continuation.java:351)
local variable: jdk.internal.vm.ContinuationScope#1
local variable: java.lang.VirtualThread$VThreadContinuation#4
local variable: java.lang.VirtualThread$VThreadContinuation#4
at java.lang.VirtualThread.yieldContinuation(VirtualThread.java:441)
local variable: java.lang.VirtualThread#4
at java.lang.VirtualThread.park(VirtualThread.java:588)
local variable: java.lang.VirtualThread#4
at java.lang.System$2.parkVirtualThread(System.java:2643)
local variable: java.lang.System$2#1
local variable: java.lang.VirtualThread#4
local variable: java.lang.VirtualThread#4
at jdk.internal.misc.VirtualThreads.park(VirtualThreads.java:54)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:219)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.lang.VirtualThread#4
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#4
local variable: java.lang.VirtualThread#4
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#3
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#4
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099)
local variable: java.util.concurrent.CountDownLatch$Sync#1
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230)
local variable: java.util.concurrent.CountDownLatch#1
at MyTest2Targ.awaitToStop(MyTest2.java:121)
local variable: MyTest2Targ#1
at MyTest2Targ$VthreadUnmounted.run(MyTest2.java:86)
local variable: MyTest2Targ$VthreadUnmounted#4
local variable: MyTest2Targ$VThreadUnmountedReferenced#4
at java.lang.Thread.runWith(Thread.java:1583)
local variable: java.lang.VirtualThread#4
local variable: class java.lang.Thread
local variable: MyTest2Targ$VthreadUnmounted#4
at java.lang.VirtualThread.run(VirtualThread.java:321)
local variable: java.lang.VirtualThread#4
local variable: MyTest2Targ$VthreadUnmounted#4
local variable: class java.lang.Thread
at java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:201)
local variable: java.lang.VirtualThread$VThreadContinuation$1#4
at jdk.internal.vm.Continuation.enter0(Continuation.java:320)
local variable: java.lang.VirtualThread$VThreadContinuation#4
at jdk.internal.vm.Continuation.enter(Continuation.java:312)
local variable: java.lang.VirtualThread$VThreadContinuation#4
Virtual Thread [#28]/parking
at jdk.internal.vm.Continuation.yield0(Continuation.java:360)
local variable: java.lang.VirtualThread$VThreadContinuation#5
local variable: jdk.internal.vm.ContinuationScope#1
at jdk.internal.vm.Continuation.yield(Continuation.java:351)
local variable: jdk.internal.vm.ContinuationScope#1
local variable: java.lang.VirtualThread$VThreadContinuation#5
local variable: java.lang.VirtualThread$VThreadContinuation#5
at java.lang.VirtualThread.yieldContinuation(VirtualThread.java:441)
local variable: java.lang.VirtualThread#5
at java.lang.VirtualThread.park(VirtualThread.java:588)
local variable: java.lang.VirtualThread#5
at java.lang.System$2.parkVirtualThread(System.java:2643)
local variable: java.lang.System$2#1
local variable: java.lang.VirtualThread#5
local variable: java.lang.VirtualThread#5
at jdk.internal.misc.VirtualThreads.park(VirtualThreads.java:54)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:219)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.lang.VirtualThread#5
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754)
local variable: java.util.concurrent.CountDownLatch$Sync#1
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#5
local variable: java.lang.VirtualThread#5
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#4
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode#5
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099)
local variable: java.util.concurrent.CountDownLatch$Sync#1
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230)
local variable: java.util.concurrent.CountDownLatch#1
at MyTest2Targ.awaitToStop(MyTest2.java:121)
local variable: MyTest2Targ#1
at MyTest2Targ$VthreadUnmounted.run(MyTest2.java:86)
local variable: MyTest2Targ$VthreadUnmounted#5
local variable: MyTest2Targ$VThreadUnmountedReferenced#5
at java.lang.Thread.runWith(Thread.java:1583)
local variable: java.lang.VirtualThread#5
local variable: class java.lang.Thread
local variable: MyTest2Targ$VthreadUnmounted#5
at java.lang.VirtualThread.run(VirtualThread.java:321)
local variable: java.lang.VirtualThread#5
local variable: MyTest2Targ$VthreadUnmounted#5
local variable: class java.lang.Thread
at java.lang.VirtualThread$VThreadContinuation$1.run(VirtualThread.java:201)
local variable: java.lang.VirtualThread$VThreadContinuation$1#5
at jdk.internal.vm.Continuation.enter0(Continuation.java:320)
local variable: java.lang.VirtualThread$VThreadContinuation#5
at jdk.internal.vm.Continuation.enter(Continuation.java:312)
local variable: java.lang.VirtualThread$VThreadContinuation#5
Virtual Thread [#29]/runnable@ForkJoinPool-1-worker-1
from visualvm.
@thurka The thread dump looks good.
Duplicate of the Virtual thread [#29] is bug in the JDK heap dumper. Will fix it.
from visualvm.
Will fix it.
Great.
I want to separate normal and virual threads in threads view (or create separate virtual threads view).
from visualvm.
NPE fixed in master.
from visualvm.
Related Issues (20)
- JDK 22 support HOT 1
- Profiler is not displaying results
- Version of OpenJDK is not supported. Please use the default-jdk. HOT 12
- Go to source does not work for JDK classes HOT 2
- CPU Sampler Results Not Reset For a New Session HOT 1
- Mouse clicks on Tracer tab on Mac do not always open tracer groups consistently HOT 3
- How to set the language
- [HeapViewer] display logical value of collection classes in java.util.ImmutableCollections HOT 1
- Uptime is negative and counting down HOT 3
- VisualVM getting stuck ( Not responding ) after starting java application in local HOT 11
- You are running VisualVM using Java Runtime Environment (JRE) HOT 6
- VisualVM freezes for several minutes before showing the profiling info HOT 1
- Not able to open large heap dump files HOT 9
- [HeapViewer] slow computation of "Merged GC Roots" HOT 1
- VSCode Extension - add custom cpu profiler filter HOT 2
- How to change language
- VSCode Extension - JDK Path with Spaces not working HOT 2
- Open source code for Lamdas, support! HOT 1
- [HeapViewer] Displaying threads in Threads view is sometimes slow HOT 2
- Add the ability to choose UI Font Size. HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from visualvm.