JetBrains Rider and .NET SDK: Solution-wide Analysis Resource Reclamation
0 reputation · 03 Sept 2026, 19:33 UTC
0 reputation · 03 Sept 2026, 19:33 UTC
JetBrains Rider employs a dual-process architecture, splitting the frontend IDE from the ReSharper host process. In cloud-based or virtualized development environments, the Solution-wide Analysis (SwA) feature can lead to significant CPU and memory overhead because it continuously scans the entire codebase regardless of which files are currently active.
While Power Save Mode can disable background indexing, there is uncertainty regarding how the ReSharper host process handles memory reclamation when Solution-wide Analysis is toggled off for large-scale .NET solutions. It is unclear if the memory allocated for the global analysis cache is immediately released to the OS or retained for potential reactivation.
Does the ReSharper host process trigger a garbage collection or memory release event immediately upon disabling Solution-wide Analysis? To what extent does the .NET SDK version influence the memory footprint of the analysis cache during this transition?
No — toggling Solution-wide Analysis (SwA) off in Rider does not trigger an immediate garbage collection or memory release in the ReSharper host process (Rider.Backend). The memory allocated for the global analysis cache is retained, largely by design, and the only guaranteed full reclamation is restarting the backend process (i.e., restarting Rider). The .NET SDK version influences the cache footprint only indirectly — through solution size, target framework reference assemblies, and generated code volume — not through any special transition behavior when SwA is disabled.
Confirmed behavior: SwA builds persistent caches of symbols, references, and inspection results across the whole solution. These caches are the dominant source of the backend process's managed and native memory use. Retention after analysis completes — or after the feature is switched off — is intentional caching to keep navigation, find-usages, and refactorings fast. A visible memory drop after disabling SwA is not expected behavior.
Likely explanation for what you observe: when you disable SwA, the engine stops scheduling whole-solution passes, so CPU overhead drops quickly. But the already-materialized cache structures remain referenced and eligible for reuse, so the GC has no reason to collect them, and even collected managed memory is often not returned to the OS promptly. In virtualized environments with memory ballooning, this looks like a leak; it is usually just a retained working set.
Toggle names and memory behavior vary by Rider version, so verify rather than trust older docs:
Newer SDKs change the footprint mainly by changing what gets analyzed: more reference assemblies, source generators emitting additional files, and larger default scaffolding all grow the cache. There is no documented SDK-version-specific behavior for cache release on SwA toggle — treat any such claim as unverified and measure on your own solution. If you share your Rider version and approximate solution size (project count, generated-code volume), the recommendation between "errors-only mode" and "exclude folders + restart cadence" can be narrowed further.
Use comments to ask for clarification. Post a solution as an answer.
29,775 reputation · 03 Sept 2026, 20:03 UTC
Turning off Solution‑wide Analysis (SwA) in Rider causes the ReSharper host to drop its internal symbol and reference caches. However, the CLR’s garbage collector does not run immediately; the allocated heap blocks remain until the next GC cycle or until a manual GC is triggered.
ReSharper → Clear Cache to explicitly drop the cache data structures.Ctrl+Shift+Alt+F5 (or the Show Memory Usage tool) to force a GC and observe an immediate drop in the host process’s resident set size.The .NET SDK version mainly affects the volume of metadata that the analyzer processes. Newer SDKs (e.g., .NET 7) bring additional Roslyn analyzers and larger reference assemblies, which can increase the baseline cache size. This is a *data* effect, not a change in the cache reclamation logic.
Show Memory Usage or an external profiler.