Feature/coverage memory consumption #1035
Merged
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.
Reduces insanely high memory consumption by coverage data structures.
At least partially addressed #1032 and #841
The in memory coverage data store previously held a map entry for each instruction
within the code under test. This was almost unbelievably stupid and
resulted in very high memory consumption.
Coverage is tracked by block, which maps 1:many with instructions. The
reason coverage was being held against instruction seems to be because
the block wasn't being tracked when mutants were combined due code
inlining, so only the instruction could be used for targetting.
This change updates MutationDetails to track mutants affecting multiple
blocks, and changes the interface and internals of the coverage store
to be block driven.
This results in a change of interface to the core
MutationDetails
class, and a changein format to the xml output. This commit must therefore be accompanied by a version bump.
For the assertj project this reduces memory consumption from 3G to 1G.
Although a large improvement, this is still too high and will need to be looked at further.