示例#1
0
 public Dictionary <string, NMDesc> CaptureMemory()
 {
     lock (this)
     {
         var result = new Dictionary <string, NMDesc>();
         foreach (var i in Mems)
         {
             var desc = new NMDesc();
             desc.Count = i.Value.Count;
             desc.Size  = i.Value.Size;
             result.Add(i.Key, desc);
         }
         return(result);
     }
 }
示例#2
0
 public virtual void OnMemAlloc(IntPtr size, string file, IntPtr line, IntPtr id)
 {
     lock (this)
     {
         AllocCount++;
         TotalCount++;
         NMDesc desc;
         if (false == Mems.TryGetValue($"{file}:{line}", out desc))
         {
             desc       = new NMDesc();
             desc.Count = 1;
             desc.Size  = (Int64)size;
             Mems.Add($"{file}:{line}", desc);
             return;
         }
         desc.Size += (Int64)size;
         desc.Count++;
     }
 }
示例#3
0
        public Dictionary <string, NMDesc> GetDelta(Dictionary <string, NMDesc> lh, Dictionary <string, NMDesc> rh)
        {
            var result = new Dictionary <string, NMDesc>();

            foreach (var i in rh)
            {
                var    desc = new NMDesc();
                NMDesc lhDesc;
                if (lh.TryGetValue(i.Key, out lhDesc) == false)
                {
                    desc.Count = i.Value.Count;
                    desc.Size  = i.Value.Size;
                }
                else
                {
                    desc.Count = i.Value.Count - lhDesc.Count;
                    desc.Size  = i.Value.Size - lhDesc.Size;
                }
                result.Add(i.Key, desc);
            }
            return(result);
        }