JShell uses 100% of one core all the time (JDK 15 Build 27)
Christian Stein
sormuras at gmail.com
Mon Jul 13 03:25:26 UTC 2020
It's coming from the "while(true)"-loop in StopDetectingInputStream.java
[0].
Aaron, try to open an external editor within the JShell session via
/edit
The CPU usage should drop immediately to normal levels.
As soon as you close the editor (it's the internal JShell Edit Pad for me)
the thread is again eating CPU cycles. Can you confirm this?
While the editor is opened, the thread waits via
jdk.internal.jshell.tool.StopDetectingInputStream.waitInputNeeded line:
164
If no editor is open, the "input.read()" method does never wait:
jdk.internal.jshell.tool.StopDetectingInputStream.lambda$setInputStream$0
line: 66
Cheers,
Christian
[0]:
https://github.com/openjdk/jdk/blob/faf4d7ccb792b16092c791c0ac77acdd440dbca1/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/StopDetectingInputStream.java#L57-L74
On Mon, Jul 13, 2020 at 5:05 AM Christian Stein <sormuras at gmail.com> wrote:
> Seems like "read line" from "jline" is underlying reason:
>
> Thread-2 [31] (RUNNABLE)
>
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await
> line: 1749
> jdk.internal.org.jline.utils.NonBlockingPumpReader.read line: 77
> jdk.internal.org.jline.utils.NonBlockingReader.read line: 57
>
> jdk.internal.org.jline.utils.NonBlocking$NonBlockingReaderInputStream.read
> line: 104
> jdk.internal.org.jline.utils.NonBlockingInputStream.read line: 36
>
> jdk.internal.jshell.tool.StopDetectingInputStream.lambda$setInputStream$0
> line: 66
>
> jdk.internal.jshell.tool.StopDetectingInputStream$$Lambda$347/0x0000000800cff330.run
> line: not available
> java.lang.Thread.run line: 832
>
> It produces a constant high CPU usage and allocates a lot of RAM per
> second.
>
> Thread Name Thread State Blocked Count Total CPU Usage Deadlocked
> Allocated Memory
> Thread-2 RUNNABLE 1 0.06252084028009336 Not Enabled 196198305136 B
>
>
>
>
>
> On Mon, Jul 13, 2020 at 4:52 AM Christian Stein <sormuras at gmail.com>
> wrote:
>
>> Hi Aaron,
>>
>> I observe the same behaviour of JShell 15 build 30.
>>
>> Here, the 100% CPU workload is split on to 3-4 logical processors.
>> Grabbed an animated GIF of "jshell.exe -- /exit" session at [0].
>> To me, it looks like a loop is running wild, w/o a
>> Thread.yield()/.sleep() call.
>>
>> Microsoft Windows [Version 10.0.19041.329]
>>
>> openjdk 15-ea 2020-09-15
>> OpenJDK Runtime Environment (build 15-ea+30-1476)
>> OpenJDK 64-Bit Server VM (build 15-ea+30-1476, mixed mode, sharing)
>>
>> Cheers,
>> Christian
>>
>> [0]:
>> https://drive.google.com/file/d/1KOQO5B9WrM4C43K3AB7H9VVPuh9hdCOe/view?usp=sharing
>>
>>
>> On Mon, Jul 13, 2020 at 4:24 AM Aaron Scott-Boddendijk <talden at gmail.com>
>> wrote:
>>
>>> This still exists in JDK 15 build 31.
>>>
>>> Is any other Windows user able to reproduce this? I have two machines,
>>> one
>>> laptop and one desktop that show a CPU thread constantly @ 100% just by
>>> starting JShell. For the desktop machine that's not a major issue but for
>>> the laptop this spins up the fans and eats the battery.
>>>
>>> JShell in JDK 14 is fine.
>>>
>>> I've yet to hear of any other user confirming this issue.
>>>
>>> --
>>> Aaron Scott-Boddendijk
>>>
>>>
>>> On Fri, Jun 26, 2020 at 2:00 PM Aaron Scott-Boddendijk <talden at gmail.com
>>> >
>>> wrote:
>>>
>>> > Just confirming that:
>>> >
>>> > * This still exists in JDK 15 build 29
>>> > * Occurs on multiple unrelated Windows 10 machines with differing major
>>> > versions of the OS.
>>> > * Does not occur in JDK 14.01 on these machines (OpenJDK 64-Bit Server
>>> VM
>>> > Zulu14.28+21-CA)
>>> > * Does not appear to occur on Linux
>>> >
>>> > --
>>> > Aaron Scott-Boddendijk
>>> >
>>> >
>>> > On Tue, Jun 16, 2020 at 11:16 AM Aaron Scott-Boddendijk <
>>> talden at gmail.com>
>>> > wrote:
>>> >
>>> >> This is the thread-dump from the JVM that VisualVM sees as using a
>>> core...
>>> >>
>>> >> 2020-06-16 11:07:35
>>> >> Full thread dump OpenJDK 64-Bit Server VM (15-ea+27-1372 mixed mode,
>>> >> sharing):
>>> >>
>>> >> Threads class SMR info:
>>> >> _java_thread_list=0x000001e34a6040f0, length=23, elements={
>>> >> 0x000001e31c1a1dc0, 0x000001e349035ee0, 0x000001e349037250,
>>> >> 0x000001e349058ae0,
>>> >> 0x000001e34905c5b0, 0x000001e34905f710, 0x000001e3490603f0,
>>> >> 0x000001e349065140,
>>> >> 0x000001e34906d620, 0x000001e349b36a20, 0x000001e349b8c690,
>>> >> 0x000001e349da3400,
>>> >> 0x000001e349daa7c0, 0x000001e349dbb640, 0x000001e34a141140,
>>> >> 0x000001e349d555c0,
>>> >> 0x000001e34b07f030, 0x000001e34a461c90, 0x000001e34a45fae0,
>>> >> 0x000001e34a45ffb0,
>>> >> 0x000001e34a4617c0, 0x000001e34a462160, 0x000001e34a45f610
>>> >> }
>>> >>
>>> >> "main" #1 prio=5 os_prio=0 cpu=1078.13ms elapsed=341.81s
>>> >> tid=0x000001e31c1a1dc0 nid=0x16b0 in Object.wait()
>>> [0x000000340d9fe000]
>>> >> java.lang.Thread.State: TIMED_WAITING (on object monitor)
>>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
>>> >> - waiting on <no object reference available>
>>> >> at
>>> >>
>>> jdk.internal.org.jline.utils.NonBlockingInputStreamImpl.read(jdk.internal.le at 15-ea
>>> >> /NonBlockingInputStreamImpl.java:139)
>>> >> - locked <0x000000060fe87338> (a
>>> >> jdk.internal.jshell.tool.ConsoleIOContext$1)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.utils.NonBlockingInputStream.read(jdk.internal.le at 15-ea
>>> >> /NonBlockingInputStream.java:62)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.utils.NonBlocking$NonBlockingInputStreamReader.read(jdk.internal.le at 15-ea
>>> >> /NonBlocking.java:168)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.utils.NonBlockingReader.read(jdk.internal.le at 15-ea
>>> >> /NonBlockingReader.java:57)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.keymap.BindingReader.readCharacter(jdk.internal.le at 15-ea
>>> >> /BindingReader.java:160)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.keymap.BindingReader.readBinding(jdk.internal.le at 15-ea
>>> >> /BindingReader.java:110)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.keymap.BindingReader.readBinding(jdk.internal.le at 15-ea
>>> >> /BindingReader.java:61)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.reader.impl.LineReaderImpl.doReadBinding(jdk.internal.le at 15-ea
>>> >> /LineReaderImpl.java:913)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.reader.impl.LineReaderImpl.readBinding(jdk.internal.le at 15-ea
>>> >> /LineReaderImpl.java:946)
>>> >> at
>>> >>
>>> jdk.internal.jshell.tool.ConsoleIOContext$2.readBinding(jdk.jshell at 15-ea
>>> >> /ConsoleIOContext.java:154)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.reader.impl.LineReaderImpl.readLine(jdk.internal.le at 15-ea
>>> >> /LineReaderImpl.java:637)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.reader.impl.LineReaderImpl.readLine(jdk.internal.le at 15-ea
>>> >> /LineReaderImpl.java:454)
>>> >> at
>>> >> jdk.internal.jshell.tool.ConsoleIOContext.readLine(jdk.jshell at 15-ea
>>> >> /ConsoleIOContext.java:229)
>>> >> at
>>> jdk.internal.jshell.tool.JShellTool.getInput(jdk.jshell at 15-ea
>>> >> /JShellTool.java:1254)
>>> >> at jdk.internal.jshell.tool.JShellTool.run(jdk.jshell at 15-ea
>>> >> /JShellTool.java:1190)
>>> >> at jdk.internal.jshell.tool.JShellTool.start(jdk.jshell at 15-ea
>>> >> /JShellTool.java:991)
>>> >> at
>>> >> jdk.internal.jshell.tool.JShellToolBuilder.start(jdk.jshell at 15-ea
>>> >> /JShellToolBuilder.java:254)
>>> >> at
>>> >> jdk.internal.jshell.tool.JShellToolProvider.main(jdk.jshell at 15-ea
>>> >> /JShellToolProvider.java:120)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "Reference Handler" #2 daemon prio=10 os_prio=2 cpu=0.00ms
>>> >> elapsed=341.79s tid=0x000001e349035ee0 nid=0x13fc waiting on condition
>>> >> [0x000000340e0fe000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >> at
>>> >> java.lang.ref.Reference.waitForReferencePendingList(java.base at 15-ea
>>> /Native
>>> >> Method)
>>> >> at
>>> >> java.lang.ref.Reference.processPendingReferences(java.base at 15-ea
>>> >> /Reference.java:241)
>>> >> at
>>> java.lang.ref.Reference$ReferenceHandler.run(java.base at 15-ea
>>> >> /Reference.java:213)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "Finalizer" #3 daemon prio=8 os_prio=1 cpu=0.00ms elapsed=341.79s
>>> >> tid=0x000001e349037250 nid=0x2a60 in Object.wait()
>>> [0x000000340e1fe000]
>>> >> java.lang.Thread.State: WAITING (on object monitor)
>>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
>>> >> - waiting on <0x0000000601400bc0> (a
>>> >> java.lang.ref.ReferenceQueue$Lock)
>>> >> at java.lang.ref.ReferenceQueue.remove(java.base at 15-ea
>>> >> /ReferenceQueue.java:155)
>>> >> - locked <0x0000000601400bc0> (a
>>> >> java.lang.ref.ReferenceQueue$Lock)
>>> >> at java.lang.ref.ReferenceQueue.remove(java.base at 15-ea
>>> >> /ReferenceQueue.java:176)
>>> >> at java.lang.ref.Finalizer$FinalizerThread.run(java.base at 15-ea
>>> >> /Finalizer.java:170)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "Signal Dispatcher" #4 daemon prio=9 os_prio=2 cpu=0.00ms
>>> elapsed=341.78s
>>> >> tid=0x000001e349058ae0 nid=0x35c8 runnable [0x0000000000000000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "Attach Listener" #5 daemon prio=5 os_prio=2 cpu=125.00ms
>>> elapsed=341.78s
>>> >> tid=0x000001e34905c5b0 nid=0x3e0c waiting on condition
>>> [0x0000000000000000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "Service Thread" #6 daemon prio=9 os_prio=0 cpu=0.00ms elapsed=341.78s
>>> >> tid=0x000001e34905f710 nid=0x398c runnable [0x0000000000000000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "C2 CompilerThread0" #7 daemon prio=9 os_prio=2 cpu=1781.25ms
>>> >> elapsed=341.78s tid=0x000001e3490603f0 nid=0xcf0 waiting on condition
>>> >> [0x0000000000000000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >> No compile task
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "C1 CompilerThread0" #10 daemon prio=9 os_prio=2 cpu=765.63ms
>>> >> elapsed=341.78s tid=0x000001e349065140 nid=0x3e54 waiting on condition
>>> >> [0x0000000000000000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >> No compile task
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "Sweeper thread" #11 daemon prio=9 os_prio=2 cpu=0.00ms
>>> elapsed=341.78s
>>> >> tid=0x000001e34906d620 nid=0x38bc runnable [0x0000000000000000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "Notification Thread" #12 daemon prio=9 os_prio=0 cpu=0.00ms
>>> >> elapsed=341.76s tid=0x000001e349b36a20 nid=0x49b8 runnable
>>> >> [0x0000000000000000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "Common-Cleaner" #13 daemon prio=8 os_prio=1 cpu=0.00ms
>>> elapsed=341.75s
>>> >> tid=0x000001e349b8c690 nid=0x26e4 in Object.wait()
>>> [0x000000340eaff000]
>>> >> java.lang.Thread.State: TIMED_WAITING (on object monitor)
>>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
>>> >> - waiting on <no object reference available>
>>> >> at java.lang.ref.ReferenceQueue.remove(java.base at 15-ea
>>> >> /ReferenceQueue.java:155)
>>> >> - locked <0x0000000601401a78> (a
>>> >> java.lang.ref.ReferenceQueue$Lock)
>>> >> at jdk.internal.ref.CleanerImpl.run(java.base at 15-ea
>>> >> /CleanerImpl.java:148)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >> at jdk.internal.misc.InnocuousThread.run(java.base at 15-ea
>>> >> /InnocuousThread.java:134)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "JDI Internal Event Handler" #17 daemon prio=5 os_prio=0 cpu=15.63ms
>>> >> elapsed=341.39s tid=0x000001e349da3400 nid=0x68 in Object.wait()
>>> >> [0x000000340effe000]
>>> >> java.lang.Thread.State: WAITING (on object monitor)
>>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
>>> >> - waiting on <no object reference available>
>>> >> at java.lang.Object.wait(java.base at 15-ea/Object.java:321)
>>> >> at
>>> com.sun.tools.jdi.EventQueueImpl.removeUnfiltered(jdk.jdi at 15-ea
>>> >> /EventQueueImpl.java:190)
>>> >> - locked <0x000000060154b630> (a
>>> com.sun.tools.jdi.EventQueueImpl)
>>> >> at
>>> com.sun.tools.jdi.EventQueueImpl.removeInternal(jdk.jdi at 15-ea
>>> >> /EventQueueImpl.java:125)
>>> >> at com.sun.tools.jdi.InternalEventHandler.run(jdk.jdi at 15-ea
>>> >> /InternalEventHandler.java:61)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "JDI Target VM Interface" #16 daemon prio=5 os_prio=0 cpu=46.88ms
>>> >> elapsed=341.39s tid=0x000001e349daa7c0 nid=0x3d04 runnable
>>> >> [0x000000340f0fe000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >> at sun.nio.ch.SocketDispatcher.read0(java.base at 15-ea/Native
>>> >> Method)
>>> >> at sun.nio.ch.SocketDispatcher.read(java.base at 15-ea
>>> >> /SocketDispatcher.java:46)
>>> >> at sun.nio.ch.NioSocketImpl.tryRead(java.base at 15-ea
>>> >> /NioSocketImpl.java:261)
>>> >> at sun.nio.ch.NioSocketImpl.implRead(java.base at 15-ea
>>> >> /NioSocketImpl.java:312)
>>> >> at sun.nio.ch.NioSocketImpl.read(java.base at 15-ea
>>> >> /NioSocketImpl.java:350)
>>> >> at sun.nio.ch.NioSocketImpl$1.read(java.base at 15-ea
>>> >> /NioSocketImpl.java:803)
>>> >> at java.net.Socket$SocketInputStream.read(java.base at 15-ea
>>> >> /Socket.java:981)
>>> >> at java.net.Socket$SocketInputStream.read(java.base at 15-ea
>>> >> /Socket.java:976)
>>> >> at com.sun.tools.jdi.SocketConnection.readPacket(jdk.jdi at 15-ea
>>> >> /SocketConnection.java:82)
>>> >> - locked <0x000000060154b998> (a java.lang.Object)
>>> >> at com.sun.tools.jdi.TargetVM.run(jdk.jdi at 15-ea
>>> >> /TargetVM.java:124)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - <0x0000000601577110> (a
>>> >> java.util.concurrent.locks.ReentrantLock$NonfairSync)
>>> >>
>>> >> "event-handler" #18 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=341.38s
>>> >> tid=0x000001e349dbb640 nid=0x203c in Object.wait()
>>> [0x000000340edfe000]
>>> >> java.lang.Thread.State: WAITING (on object monitor)
>>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
>>> >> - waiting on <no object reference available>
>>> >> at java.lang.Object.wait(java.base at 15-ea/Object.java:321)
>>> >> at
>>> com.sun.tools.jdi.EventQueueImpl.removeUnfiltered(jdk.jdi at 15-ea
>>> >> /EventQueueImpl.java:190)
>>> >> - locked <0x000000060154bc28> (a
>>> com.sun.tools.jdi.EventQueueImpl)
>>> >> at com.sun.tools.jdi.EventQueueImpl.remove(jdk.jdi at 15-ea
>>> >> /EventQueueImpl.java:97)
>>> >> at com.sun.tools.jdi.EventQueueImpl.remove(jdk.jdi at 15-ea
>>> >> /EventQueueImpl.java:83)
>>> >> at jdk.jshell.execution.JdiEventHandler.run(jdk.jshell at 15-ea
>>> >> /JdiEventHandler.java:79)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "output reader" #19 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=341.31s
>>> >> tid=0x000001e34a141140 nid=0x49c0 runnable [0x000000340eeff000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >> at sun.nio.ch.SocketDispatcher.read0(java.base at 15-ea/Native
>>> >> Method)
>>> >> at sun.nio.ch.SocketDispatcher.read(java.base at 15-ea
>>> >> /SocketDispatcher.java:46)
>>> >> at sun.nio.ch.NioSocketImpl.tryRead(java.base at 15-ea
>>> >> /NioSocketImpl.java:261)
>>> >> at sun.nio.ch.NioSocketImpl.implRead(java.base at 15-ea
>>> >> /NioSocketImpl.java:312)
>>> >> at sun.nio.ch.NioSocketImpl.read(java.base at 15-ea
>>> >> /NioSocketImpl.java:350)
>>> >> at sun.nio.ch.NioSocketImpl$1.read(java.base at 15-ea
>>> >> /NioSocketImpl.java:803)
>>> >> at java.net.Socket$SocketInputStream.read(java.base at 15-ea
>>> >> /Socket.java:981)
>>> >> at java.net.Socket$SocketInputStream.read(java.base at 15-ea
>>> >> /Socket.java:976)
>>> >> at java.io.FilterInputStream.read(java.base at 15-ea
>>> >> /FilterInputStream.java:82)
>>> >> at jdk.jshell.execution.DemultiplexInput.run(jdk.jshell at 15-ea
>>> >> /DemultiplexInput.java:58)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - <0x0000000601553510> (a
>>> >> java.util.concurrent.locks.ReentrantLock$NonfairSync)
>>> >>
>>> >> "Thread-0" #21 daemon prio=5 os_prio=0 cpu=312.50ms elapsed=341.22s
>>> >> tid=0x000001e349d555c0 nid=0x4d88 waiting on condition
>>> [0x000000340f1fe000]
>>> >> java.lang.Thread.State: WAITING (parking)
>>> >> at jdk.internal.misc.Unsafe.park(java.base at 15-ea/Native
>>> Method)
>>> >> - parking to wait for <0x0000000601550fc0> (a
>>> >> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>> >> at java.util.concurrent.locks.LockSupport.park(java.base at 15-ea
>>> >> /LockSupport.java:341)
>>> >> at
>>> >>
>>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(java.base at 15-ea
>>> >> /AbstractQueuedSynchronizer.java:505)
>>> >> at
>>> java.util.concurrent.ForkJoinPool.managedBlock(java.base at 15-ea
>>> >> /ForkJoinPool.java:3137)
>>> >> at
>>> >>
>>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base at 15-ea
>>> >> /AbstractQueuedSynchronizer.java:1614)
>>> >> at
>>> java.util.concurrent.LinkedBlockingQueue.take(java.base at 15-ea
>>> >> /LinkedBlockingQueue.java:435)
>>> >> at
>>> java.util.concurrent.ThreadPoolExecutor.getTask(java.base at 15-ea
>>> >> /ThreadPoolExecutor.java:1056)
>>> >> at
>>> >> java.util.concurrent.ThreadPoolExecutor.runWorker(java.base at 15-ea
>>> >> /ThreadPoolExecutor.java:1116)
>>> >> at
>>> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base at 15-ea
>>> >> /ThreadPoolExecutor.java:630)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "Thread-2" #23 daemon prio=5 os_prio=0 cpu=338859.38ms elapsed=340.58s
>>> >> tid=0x000001e34b07f030 nid=0xac0 runnable [0x000000340f3fe000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >> at
>>> >>
>>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base at 15-ea
>>> >> /AbstractQueuedSynchronizer.java:1749)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.utils.NonBlockingPumpReader.read(jdk.internal.le at 15-ea
>>> >> /NonBlockingPumpReader.java:77)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.utils.NonBlockingReader.read(jdk.internal.le at 15-ea
>>> >> /NonBlockingReader.java:57)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.utils.NonBlocking$NonBlockingReaderInputStream.read(jdk.internal.le at 15-ea
>>> >> /NonBlocking.java:104)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.utils.NonBlockingInputStream.read(jdk.internal.le at 15-ea
>>> >> /NonBlockingInputStream.java:36)
>>> >> at
>>> >>
>>> jdk.internal.jshell.tool.StopDetectingInputStream.lambda$setInputStream$0(jdk.jshell at 15-ea
>>> >> /StopDetectingInputStream.java:66)
>>> >> at
>>> >>
>>> jdk.internal.jshell.tool.StopDetectingInputStream$$Lambda$410/0x0000000800d2eb28.run(jdk.jshell at 15-ea
>>> /Unknown
>>> >> Source)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - <0x00000006028b4318> (a
>>> >> java.util.concurrent.locks.ReentrantLock$NonfairSync)
>>> >>
>>> >> "WindowsStreamPump" #25 daemon prio=5 os_prio=0 cpu=0.00ms
>>> >> elapsed=340.53s tid=0x000001e34a461c90 nid=0x3688 runnable
>>> >> [0x000000340f4fe000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >> at
>>> >>
>>> jdk.internal.org.jline.terminal.impl.jna.win.Kernel32Impl.WaitForSingleObject(jdk.internal.le at 15-ea
>>> /Native
>>> >> Method)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.terminal.impl.jna.win.JnaWinSysTerminal.readConsoleInput(jdk.internal.le at 15-ea
>>> >> /JnaWinSysTerminal.java:185)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.terminal.impl.jna.win.JnaWinSysTerminal.processConsoleInput(jdk.internal.le at 15-ea
>>> >> /JnaWinSysTerminal.java:108)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.terminal.impl.AbstractWindowsTerminal.pump(jdk.internal.le at 15-ea
>>> >> /AbstractWindowsTerminal.java:465)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.terminal.impl.AbstractWindowsTerminal$$Lambda$417/0x0000000800d310f8.run(jdk.internal.le at 15-ea
>>> /Unknown
>>> >> Source)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "null non blocking reader thread" #26 daemon prio=5 os_prio=0
>>> cpu=0.00ms
>>> >> elapsed=340.26s tid=0x000001e34a45fae0 nid=0x488 in Object.wait()
>>> >> [0x000000340f6ff000]
>>> >> java.lang.Thread.State: WAITING (on object monitor)
>>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
>>> >> - waiting on <no object reference available>
>>> >> at java.lang.Object.wait(java.base at 15-ea/Object.java:321)
>>> >> at
>>> >>
>>> jdk.internal.jshell.tool.StopDetectingInputStream.read(jdk.jshell at 15-ea
>>> >> /StopDetectingInputStream.java:98)
>>> >> - locked <0x0000000601e2b650> (a
>>> >> jdk.internal.jshell.tool.StopDetectingInputStream)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.utils.NonBlockingInputStreamImpl.run(jdk.internal.le at 15-ea
>>> >> /NonBlockingInputStreamImpl.java:216)
>>> >> at
>>> >>
>>> jdk.internal.org.jline.utils.NonBlockingInputStreamImpl$$Lambda$584/0x0000000800d4f088.run(jdk.internal.le at 15-ea
>>> /Unknown
>>> >> Source)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "RMI TCP Accept-0" #27 daemon prio=5 os_prio=0 cpu=0.00ms
>>> elapsed=180.89s
>>> >> tid=0x000001e34a45ffb0 nid=0x45f0 runnable [0x000000340d8fe000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >> at sun.nio.ch.Net.accept(java.base at 15-ea/Native Method)
>>> >> at sun.nio.ch.NioSocketImpl.accept(java.base at 15-ea
>>> >> /NioSocketImpl.java:755)
>>> >> at java.net.ServerSocket.implAccept(java.base at 15-ea
>>> >> /ServerSocket.java:684)
>>> >> at java.net.ServerSocket.platformImplAccept(java.base at 15-ea
>>> >> /ServerSocket.java:650)
>>> >> at java.net.ServerSocket.implAccept(java.base at 15-ea
>>> >> /ServerSocket.java:626)
>>> >> at java.net.ServerSocket.implAccept(java.base at 15-ea
>>> >> /ServerSocket.java:583)
>>> >> at java.net.ServerSocket.accept(java.base at 15-ea
>>> >> /ServerSocket.java:540)
>>> >> at
>>> >>
>>> sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(jdk.management.agent at 15-ea
>>> >> /LocalRMIServerSocketFactory.java:52)
>>> >> at
>>> >>
>>> sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(java.rmi at 15-ea
>>> >> /TCPTransport.java:413)
>>> >> at
>>> >> sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(java.rmi at 15-ea
>>> >> /TCPTransport.java:377)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - <0x0000000602e53118> (a
>>> >> java.util.concurrent.locks.ReentrantLock$NonfairSync)
>>> >>
>>> >> "RMI TCP Connection(1)-10.0.201.131" #28 daemon prio=5 os_prio=0
>>> >> cpu=437.50ms elapsed=180.87s tid=0x000001e34a4617c0 nid=0x4790
>>> runnable
>>> >> [0x000000340fbfe000]
>>> >> java.lang.Thread.State: RUNNABLE
>>> >> at sun.nio.ch.Net.poll(java.base at 15-ea/Native Method)
>>> >> at sun.nio.ch.NioSocketImpl.park(java.base at 15-ea
>>> >> /NioSocketImpl.java:181)
>>> >> at sun.nio.ch.NioSocketImpl.timedRead(java.base at 15-ea
>>> >> /NioSocketImpl.java:285)
>>> >> at sun.nio.ch.NioSocketImpl.implRead(java.base at 15-ea
>>> >> /NioSocketImpl.java:309)
>>> >> at sun.nio.ch.NioSocketImpl.read(java.base at 15-ea
>>> >> /NioSocketImpl.java:350)
>>> >> at sun.nio.ch.NioSocketImpl$1.read(java.base at 15-ea
>>> >> /NioSocketImpl.java:803)
>>> >> at java.net.Socket$SocketInputStream.read(java.base at 15-ea
>>> >> /Socket.java:981)
>>> >> at java.io.BufferedInputStream.fill(java.base at 15-ea
>>> >> /BufferedInputStream.java:244)
>>> >> at java.io.BufferedInputStream.read(java.base at 15-ea
>>> >> /BufferedInputStream.java:263)
>>> >> - locked <0x0000000602e19470> (a java.io.BufferedInputStream)
>>> >> at java.io.FilterInputStream.read(java.base at 15-ea
>>> >> /FilterInputStream.java:82)
>>> >> at
>>> >> sun.rmi.transport.tcp.TCPTransport.handleMessages(java.rmi at 15-ea
>>> >> /TCPTransport.java:569)
>>> >> at
>>> >>
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(java.rmi at 15-ea
>>> >> /TCPTransport.java:828)
>>> >> at
>>> >>
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(java.rmi at 15-ea
>>> >> /TCPTransport.java:705)
>>> >> at
>>> >>
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$686/0x0000000800da3998.run(java.rmi at 15-ea
>>> /Unknown
>>> >> Source)
>>> >> at
>>> >> java.security.AccessController.executePrivileged(java.base at 15-ea
>>> >> /AccessController.java:753)
>>> >> at java.security.AccessController.doPrivileged(java.base at 15-ea
>>> >> /AccessController.java:391)
>>> >> at
>>> >>
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(java.rmi at 15-ea
>>> >> /TCPTransport.java:704)
>>> >> at
>>> >> java.util.concurrent.ThreadPoolExecutor.runWorker(java.base at 15-ea
>>> >> /ThreadPoolExecutor.java:1130)
>>> >> at
>>> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base at 15-ea
>>> >> /ThreadPoolExecutor.java:630)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - <0x0000000602e19708> (a
>>> >> java.util.concurrent.ThreadPoolExecutor$Worker)
>>> >> - <0x0000000602e59038> (a
>>> >> java.util.concurrent.locks.ReentrantLock$NonfairSync)
>>> >>
>>> >> "RMI Scheduler(0)" #29 daemon prio=5 os_prio=0 cpu=0.00ms
>>> elapsed=180.86s
>>> >> tid=0x000001e34a462160 nid=0x1df0 waiting on condition
>>> [0x000000340fcfe000]
>>> >> java.lang.Thread.State: TIMED_WAITING (parking)
>>> >> at jdk.internal.misc.Unsafe.park(java.base at 15-ea/Native
>>> Method)
>>> >> - parking to wait for <0x0000000602e1af00> (a
>>> >> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
>>> >> at
>>> >> java.util.concurrent.locks.LockSupport.parkNanos(java.base at 15-ea
>>> >> /LockSupport.java:252)
>>> >> at
>>> >>
>>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(java.base at 15-ea
>>> >> /AbstractQueuedSynchronizer.java:1661)
>>> >> at
>>> >>
>>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(java.base at 15-ea
>>> >> /ScheduledThreadPoolExecutor.java:1182)
>>> >> at
>>> >>
>>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(java.base at 15-ea
>>> >> /ScheduledThreadPoolExecutor.java:899)
>>> >> at
>>> java.util.concurrent.ThreadPoolExecutor.getTask(java.base at 15-ea
>>> >> /ThreadPoolExecutor.java:1056)
>>> >> at
>>> >> java.util.concurrent.ThreadPoolExecutor.runWorker(java.base at 15-ea
>>> >> /ThreadPoolExecutor.java:1116)
>>> >> at
>>> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base at 15-ea
>>> >> /ThreadPoolExecutor.java:630)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "JMX server connection timeout 30" #30 daemon prio=5 os_prio=0
>>> cpu=0.00ms
>>> >> elapsed=180.86s tid=0x000001e34a45f610 nid=0x2fe8 in Object.wait()
>>> >> [0x000000340fdff000]
>>> >> java.lang.Thread.State: TIMED_WAITING (on object monitor)
>>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
>>> >> - waiting on <no object reference available>
>>> >> at
>>> >>
>>> com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(java.management at 15-ea
>>> >> /ServerCommunicatorAdmin.java:171)
>>> >> - locked <0x0000000602e1ca08> (a [I)
>>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
>>> >>
>>> >> Locked ownable synchronizers:
>>> >> - None
>>> >>
>>> >> "VM Thread" os_prio=2 cpu=515.63ms elapsed=341.79s
>>> tid=0x000001e349031eb0
>>> >> nid=0x540 runnable
>>> >>
>>> >> "GC Thread#0" os_prio=2 cpu=328.13ms elapsed=341.80s
>>> >> tid=0x000001e31c218710 nid=0x19e8 runnable
>>> >>
>>> >> "GC Thread#1" os_prio=2 cpu=265.63ms elapsed=341.53s
>>> >> tid=0x000001e349b353d0 nid=0x1cc4 runnable
>>> >>
>>> >> "GC Thread#2" os_prio=2 cpu=218.75ms elapsed=340.37s
>>> >> tid=0x000001e349b350a0 nid=0x1ddc runnable
>>> >>
>>> >> "GC Thread#3" os_prio=2 cpu=187.50ms elapsed=338.82s
>>> >> tid=0x000001e349b35700 nid=0x4a48 runnable
>>> >>
>>> >> "GC Thread#4" os_prio=2 cpu=140.63ms elapsed=338.82s
>>> >> tid=0x000001e349b340b0 nid=0x32e8 runnable
>>> >>
>>> >> "GC Thread#5" os_prio=2 cpu=156.25ms elapsed=338.82s
>>> >> tid=0x000001e349b35a30 nid=0x38cc runnable
>>> >>
>>> >> "GC Thread#6" os_prio=2 cpu=171.88ms elapsed=338.82s
>>> >> tid=0x000001e349b35d60 nid=0x3ed0 runnable
>>> >>
>>> >> "G1 Main Marker" os_prio=2 cpu=0.00ms elapsed=341.80s
>>> >> tid=0x000001e31c229930 nid=0x21c runnable
>>> >>
>>> >> "G1 Conc#0" os_prio=2 cpu=0.00ms elapsed=341.80s
>>> tid=0x000001e31c22a5a0
>>> >> nid=0x3920 runnable
>>> >>
>>> >> "G1 Refine#0" os_prio=2 cpu=0.00ms elapsed=341.80s
>>> tid=0x000001e31c253f10
>>> >> nid=0x1f84 runnable
>>> >>
>>> >> "G1 Young RemSet Sampling" os_prio=2 cpu=0.00ms elapsed=341.80s
>>> >> tid=0x000001e31c254b90 nid=0x27ac runnable
>>> >>
>>> >> "VM Periodic Task Thread" os_prio=2 cpu=15.63ms elapsed=341.76s
>>> >> tid=0x000001e349b39710 nid=0x838 waiting on condition
>>> >>
>>> >> JNI global refs: 33, weak refs: 0
>>> >>
>>> >> --
>>> >> Aaron Scott-Boddendijk
>>> >>
>>> >> On Tue, Jun 16, 2020 at 10:15 AM Robert Field <
>>> robert.field at oracle.com>
>>> >> wrote:
>>> >>
>>> >>> Make that jps/jstack
>>> >>>
>>> >>> -R
>>> >>>
>>> >>> On 2020-06-15 15:12, Robert Field wrote:
>>> >>> > Thanks for the report.
>>> >>> >
>>> >>> > What, if anything, is the Java stack for this thread (jps)?
>>> >>> >
>>> >>> > -Robert
>>> >>> >
>>> >>> >
>>> >>> > On 2020-06-15 14:41, Aaron Scott-Boddendijk wrote:
>>> >>> >> System:
>>> >>> >> * Windows 10
>>> >>> >> * Powershell
>>> >>> >>
>>> >>> >> When I start JShell, without executing anything, a CPU core is
>>> always
>>> >>> at
>>> >>> >> 100% (a single thread though I haven't identified what it's
>>> doing).
>>> >>> >>
>>> >>> >> The thread stack is as follows (with only the last two items
>>> sometimes
>>> >>> >> change - but I don't know the internals of the JVM to know if this
>>> >>> >> useful
>>> >>> >> or significant):
>>> >>> >>
>>> >>> >> ntoskrnl.exe!KeSynchronizeExecution+0x5b46
>>> >>> >> ntoskrnl.exe!KeWaitForSingleObject+0x1c2d
>>> >>> >> ntoskrnl.exe!KeWaitForSingleObject+0xab4
>>> >>> >> ntoskrnl.exe!KeWaitForSingleObject+0x255
>>> >>> >> ntoskrnl.exe!RtlClearBitsEx+0x15a7
>>> >>> >> ntoskrnl.exe!KeWaitForSingleObject+0x3828
>>> >>> >> ntoskrnl.exe!KeSynchronizeExecution+0x3120
>>> >>> >> jvm.dll!c2v_notifyCompilerInliningEvent+0x201797
>>> >>> >>
>>> >>> >> The JDK 14 version of JShell does not have this issue but several
>>> of
>>> >>> the
>>> >>> >> recent JDK 15 builds have done this.
>>> >>> >>
>>> >>> >> --
>>> >>> >> Aaron Scott-Boddendijk
>>> >>>
>>> >>
>>>
>>
More information about the kulla-dev
mailing list