[Xamarin.Android.Build.Tasks] should Dispose AssemblyDefinition #2148
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.
Reviewing our codebase, we found a place where the
BuildApk
task wascalling an overload for
MonoAndroidHelper.IsReferenceAssembly
.This presented two problems:
InMemory
optionDispose()
!Case No.1 was bad, since we basically load every assembly into memory!
Likewise, we need to call
Dispose
here, since a lock could be heldon the file here on Windows.
The changes here made
BuildApk
slower (and more correct!), but theoverall build time better.
Before:
After:
I think the
AssemblyDefinition
instances must have been gettingcleaned up later in the build by the GC (if we were lucky), and also
used a lot more memory. This would contribute to overall build time.