- System requirements
- Profiler architecture
- Running the profiler
- Profiler activation
- Start profiling
- Capturing snapshots
- Solving performance problems
- CPU profiling
- Threads
- Memory profiling
- Memory telemetry
- Object allocation recording
- Shallow and retained sizes
- Memory views
- Objects view
- Class list
- Class and namespace
- Domains and modules
- Object generations
- Shallow size
- Object explorer
- Biggest objects (dominators)
- Allocations
- Merged paths
- Class hierarchy
- Method merged callees view
- Method back traces view
- Quick info view
- GC roots view
- Leak detection: working with paths
- Memory inspections
- Comparing memory snapshots
- Values of primitive types
- Useful actions
- Garbage collection
- Exception profiling
- Probes: monitor higher level events
- Performance Charts
- Inspections: automatic recognition of typical problems
- Automatically trigger actions on event
- Summary, snapshot annotation, automatic deobfuscation
- Time measurement (CPU time, wall time)
- Filters
- Snapshot directory customization
- Export of profiling results to HTML, CSV, XML, plain text
- Profiler API
- Profiler HTTP API
- Command line tool to control profiling
- Settings
Object generations
The garbage collector groups objects by age and collects younger objects more often than older objects.
New objects are created in generation 0. As most objects are short-lived, only a small percentage of young objects are likely to survive their first collection. Once an object survives the first garbage collection, it gets promoted to generation 1.
All objects in generation 1 that survive collection are promoted to generation 2. Surviving objects in generation 2 stay in generation 2.
Also, there is "Large Object Heap" for objects bigger than 85,000 bytes. That generation is not compacted.
To learn more about the generational garbage collector, refer to MSDN.
All tabs representing live objects have a "Generations" view:

To see the generation of a single object, use Quick Info:
