Datadog's .NET profiler is a comprehensive tool for monitoring application performance. It provides detailed insights into CPU consumption, wall time, exceptions, lock contention, and memory usage profiling. The profiler uses a pull model to collect data, which means it retrieves CPU consumption details from the operating system every minute. Memory usage profiling is useful for identifying high CPU consumption due to excessive garbage collection by the runtime, pinpointing specific parts of code responsible for memory allocation, and viewing samples of objects that stay in memory after garbage collection. The profiler tracks allocations using the `AllocationTick` event, which provides information about the last allocated object crossing a 100 KB threshold. It also monitors the lifetime of sampled allocations using weak handles created from the given address and added into the list of monitored objects with its creation time. However, upscaling issues arise due to complications in scaling sampled values to estimate real values, particularly for live objects. The profiler does not upscale sampled values currently, but it may change in the future when the allocation sampling distribution allows more realistic upscaling.