Description
A few hours after vscode-java updated itself to 1.56.0, the Computer hit 100% CPU/RAM with ~17 concurrent JVMs. They were Gradle daemons spawned by the language server.
The JDT log shows the server re-initializing in a loop: 169 × Initializing JDT Language Server (Standard) one every 20.2 s for an hour. Each cycle triggered a full Importing Gradle project(s) and therefore a new daemon.
Counting all daemon logs on this Computer (history back to 2025-09) and attributing them to the extension version via the javaHome path in DefaultDaemonContext:
| Extension version |
Active days |
Daemons |
Max/day |
| 1.55.0 (2026-06-29 … 09-04) |
29 |
37 |
2 |
| 1.56.0 (from 2026-09-04) |
2 |
259 |
204 |
Same project, same Gradle version, same Computer. 1.55.0 ran for over two months and never produced more than 2 daemons on any day.
Daemons are launched with -Xmx1024M and idleTimeout=10800000 (3 h), so they accumulate faster than they finish.
Logged at every one of the initializations (170 ×):
!MESSAGE org.eclipse.lsp4j.jsonrpc.ResponseErrorException: Unhandled method workspace/executeClientCommand
at org.eclipse.jdt.ls.core.internal.JavaClientConnection.executeClientCommand(JavaClientConnection.java:89)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.synchronizeBundles(JDTLanguageServer.java:464)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer$2.run(JDTLanguageServer.java:324)
Caused by: org.eclipse.lsp4j.jsonrpc.ResponseErrorException: Unhandled method workspace/executeClientCommand
at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleResponse(RemoteEndpoint.java:214)
To Reproduce
I have not found reliable reproduction steps (see Additional Information). What led to the escalated case:
- Let vscode-java auto-update from 1.55.0 to 1.56.0
- Open a multi-project Gradle workspace (Gradle 8.11.1, 4 projects).
- Work normally. The language server entered the re-initialization loop on its own.
- Watch
~/.gradle/daemon/<version>/ — one new daemon-*.out.log appears roughly every 20 seconds.
Repeated VS Code restarts do not trigger it; each restart produces a single initialization.
Environment
- Operating System: Windows 11 Pro 26200
- JDK version: bundled JRE 21.0.12.1 (Eclipse Adoptium)
- Visual Studio Code version: 1.136.1
- Java extension version: 1.56.0 (JDT LS
1.61.0.202609021834)
Additional Information
vscjava.vscode-gradle 3.18.0 was not updated on that day
- Restarting VS Code did not help; only
gradle --stop cleared the processes.
- ☝️ The loop still fires on every VS Code start (2026-09-07: 55 re-initializations, peaking at 16 daemons in one minute), but now stops by itself after ~20 minutes instead of running for an hour, so the load is no longer noticeable.
- ☹️ I cannot reproduce the escalated case on demand. Nothing changed in between — same versions, no fix released.
Description
A few hours after vscode-java updated itself to 1.56.0, the Computer hit 100% CPU/RAM with ~17 concurrent JVMs. They were Gradle daemons spawned by the language server.
The JDT log shows the server re-initializing in a loop: 169 ×
Initializing JDT Language Server (Standard)one every 20.2 s for an hour. Each cycle triggered a fullImporting Gradle project(s)and therefore a new daemon.Counting all daemon logs on this Computer (history back to 2025-09) and attributing them to the extension version via the
javaHomepath inDefaultDaemonContext:Same project, same Gradle version, same Computer. 1.55.0 ran for over two months and never produced more than 2 daemons on any day.
Daemons are launched with
-Xmx1024MandidleTimeout=10800000(3 h), so they accumulate faster than they finish.Logged at every one of the initializations (170 ×):
To Reproduce
I have not found reliable reproduction steps (see Additional Information). What led to the escalated case:
~/.gradle/daemon/<version>/— one newdaemon-*.out.logappears roughly every 20 seconds.Repeated VS Code restarts do not trigger it; each restart produces a single initialization.
Environment
1.61.0.202609021834)Additional Information
vscjava.vscode-gradle3.18.0 was not updated on that daygradle --stopcleared the processes.