public void AddStart(ETWEventClrGCStart start) { if (startEvents.Count >= maxUnmergedEventsCount) { Remove(startEvents.First); } Add(start); }
internal GCInfo(ETWEventClrGCStart start, ETWEventClrGCEnd end) { StartTimestamp = start.Timestamp; Duration = end.Timestamp - start.Timestamp; Depth = start.Depth; Count = start.Count; // we use custom enums here because otherwise // users must reference TraceEvents directly Type = (GCType)start.Type; Reason = (GCReason)start.Reason; ProcessId = start.ProcessId; }
private void Add(ETWEventClrGCStart startEvent) { if (cachedNode == null) { startEvents.AddLast(startEvent); } else { cachedNode.Value = startEvent; startEvents.AddLast(cachedNode); cachedNode = null; } }
private static bool Corresponds(ETWEventClrGCStart start, ETWEventClrGCEnd end) { return(start.Count == end.Count && start.ProcessId == end.ProcessId && start.Depth == end.Depth); }
private void OnGcStart(ETWEventClrGCStart obj) { gcEventsMerger.AddStart(obj); }