Optimizing ReadLanguageWorkerFile to avoid LOH allocations by reading files in chunks #11069
+38
−5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Optimized
RpcWorkerConfigFactory.ReadLanguageWorkerFile
to avoid LOH allocations by reading worker executable files in buffered chunks instead of using File.ReadAllBytes. The previous implementation loaded entire files into memory, resulting in LOH allocations and increased GC pressure. Since the method's main purpose is to preload files into the OS disk cache, reading in chunks achieves this efficiently, reducing memory usage and minimizing the likelihood of blocking GEN2 garbage collections.Visual Studio
Before
After
DotMemory
Before
After
With the previous approach, the 120MB+ LOH allocation would persist until the next Gen2 GC (blocking). Change in this PR reduces the likelihood of triggering a Gen2 GC by avoiding large object heap allocations.
Pull request checklist
IMPORTANT: Currently, changes must be backported to the
in-proc
branch to be included in Core Tools and non-Flex deployments.in-proc
branch is not requiredrelease_notes.md
Additional information
Additional PR information