You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
C/C++ 1.35.6: cpptools memory grows to >1.7 GB in an existing profile #14856
Workspace: small folder, no large C++ project; includePath was ${workspaceFolder}/**
Symptoms
After enabling C_Cpp.intelliSenseEngine (default) in an existing profile, cpptools.exe private memory grew rapidly and did not stay bounded:
207 MB -> 309 MB in about 5 seconds
478 MB shortly after restart
Later reached 1.56 GB, then 1.72 GB while the process was still running
Stopping cpptools.exe releases the memory temporarily, but the extension restarts the process and it begins growing again. Setting "C_Cpp.intelliSenseEngine": "disabled" stops the language server and prevents further growth.
Isolation result
I also created a clean profile with only ms-vscode.cpptools 1.35.6 and opened a trivial test.cpp:
Peak: about 710 MB
After initialization: settled around 355 MB
So this is not reproducible with only the extension and a trivial workspace. The large growth appears in an existing profile with other extensions/windows, but it is still a large, repeatable regression relative to the clean profile.
Request
Please advise whether this is a known issue in 1.35.6, or what diagnostic output would help identify the interaction. I can provide a C/C++ log and a process-memory trace if needed.
Additional isolation data from the same Windows 11 / VS Code 1.113.0 environment:
I launched multiple VS Code windows in one clean profile containing only C/C++ 1.35.6 and opened the same trivial test.cpp in each window.
3 windows: 18 cpptools/cpptools-srv/cpptools-srv2 processes; peak about 2.15 GB private / 991 MB working set, then settled around 1.09 GB private / 424 MB working set.
5 windows: 31 cpptools-related processes; about 2.37 GB private / 1.01 GB working set during startup.
The largest individual cpptools-related process observed was about 142 MB.
So the 4 GB figure is likely an aggregate of multiple language-server/parser worker processes across windows, not one process. I am adding this in case it helps reproduce or explains the report. I can still collect a C/C++ log if useful.
After closing VS Code, replacing 1.35.6 with 1.34.4, pinning 1.34.4, and reopening the same trivial C++ file in the existing profile:
Startup peak: about 873 MB private across cpptools processes
Settled: about 400 MB private / 175 MB working set
No continued growth to the previous >1.7 GB range
This makes 1.34.4 a usable workaround for the affected profile. The clean-profile 1.35.6 test still peaked around 710 MB and settled around 355 MB, so the exact trigger may require the full profile, but the rollback difference is useful.
cpptools potentially accumulates memory based on the entire workspace, but cpptools-srv should only accumulate memory based on the current TU (source+headers) and cpptools-srv2 should only accumulate memory based on the last file that was tag parsed.
Did you have any repro workspace we could try?
Also, 1.7 GB for all the cpptools* processes is not "out of the ordinary" necessarily. What does "continued growth" mean? How far does it grow? Does it OOM crash?
Activity
RomanCohort commentedon Nov 3, 2026
Additional isolation data from the same Windows 11 / VS Code 1.113.0 environment:
I launched multiple VS Code windows in one clean profile containing only C/C++ 1.35.6 and opened the same trivial
test.cppin each window.So the 4 GB figure is likely an aggregate of multiple language-server/parser worker processes across windows, not one process. I am adding this in case it helps reproduce or explains the report. I can still collect a C/C++ log if useful.
RomanCohort commentedon Nov 3, 2026
Rollback result from the same main profile:
After closing VS Code, replacing 1.35.6 with 1.34.4, pinning 1.34.4, and reopening the same trivial C++ file in the existing profile:
This makes 1.34.4 a usable workaround for the affected profile. The clean-profile 1.35.6 test still peaked around 710 MB and settled around 355 MB, so the exact trigger may require the full profile, but the rollback difference is useful.
sean-mcmanus commentedon Nov 4, 2026
YAN (@RomanCohort) What does "existing profile" mean?
What is the memory breakdown per-process?
cpptools potentially accumulates memory based on the entire workspace, but cpptools-srv should only accumulate memory based on the current TU (source+headers) and cpptools-srv2 should only accumulate memory based on the last file that was tag parsed.
Did you have any repro workspace we could try?
Also, 1.7 GB for all the cpptools* processes is not "out of the ordinary" necessarily. What does "continued growth" mean? How far does it grow? Does it OOM crash?