Transparent Compiler: High memory usage in FSAC #16979
Labels
Area-FCS
Feature Improvement
Impact-Medium
(Internal MS Team use only) Describes an issue with moderate impact on existing code.
Triage-Investigate
Milestone
Please provide a succinct description of the issue.
Using the transparent compiler in FSAC, I've noticed large memory usage. After doing some investigation with dotnet-dump and dotmemory I've found two places that could be better:
The biggest issue stems from re-creating projects for each
FSharpCheckFileResults
.fsharp/src/Compiler/Service/TransparentCompiler.fs
Line 1618 in 06c85f0
or
FSharpCheckProjectResults
.fsharp/src/Compiler/Service/TransparentCompiler.fs
Line 1886 in 06c85f0
For a large project, this creates thousands of projects for every typecheck. I have a local fork that passes in
None
instead on the TC side while keeping the BC still passing in Some options. This has an the effect I was looking for but I doubt that's a desirable fix.Secondly, the size factor in the CompilerCaches isn't publicly configurable. Meaning these checks can stay around in memory for quite a long time.
fsharp/src/Compiler/Service/TransparentCompiler.fs
Line 262 in 06c85f0
fsharp/src/Compiler/Service/TransparentCompiler.fs
Line 342 in 06c85f0
For larger projects, being able to change the weakly held and the strongly held references would be ideal.
Expected behavior
Memory usage is ok.
Actual behavior
Chrome isn't scared by much but it's definitely scared by this.
Known workarounds
Custom fork of FCS
Related information
Provide any related information (optional):
The text was updated successfully, but these errors were encountered: