Skip to content

Conversation

@mpeyrotc
Copy link
Member

These changes are a continuation of the following PRs:

  • 1486 Let SegmentedList Handle more than 2^31-1 elements
  • 1488 SegmentedDictionary Initial Implementation and Tests
  • 1491 Opt-In 64-bit StreamLabel Support

In summary we are hooking everything together, and able to process large memory heap dumps. The actual changes are:

  1. SegmentedDictionary.cs and SegmentedList.cs have minor improvements and make sure we don't delete public methods and that new methods that were added for this scenario remain internal.
  2. SegmentedStreamReader.cs takes a SerializationConfiguration instance specifying if it should treat StreamLabel instances as 32 or 64bit objects; as well as making the necessary adjustments to take advantage of this fact when processing a memory graph.
  3. SegmentedMemoryStreamWriter.cs is the same as SegmentedStreamReader.cs
  4. GCHeapDump.cs did not require making the XmlGcHeapDump class public for it to be used in the PerfView.Tests project.
  5. MemoryGraph.cs should not use the expected size to determine when to use a SegmentedDictionary instance since it is not that accurate and the range is subject to change if the internal implementation of a Dictionary changes.
  6. Graph.cs makes sure that the SegmentedMemoryStreamWriter instance it creates is passed the correct StreamLabel size information.

@brianrob brianrob merged commit aba5b8a into microsoft:feature/large-gcdump Sep 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants