public void Sample()
 {
     ResourcesMemoryTracker.SampleGlobal();
     using (List <ResourcesMemoryTracker.TrackTypeInfo> .Enumerator enumerator = this.TypeInfoList.GetEnumerator())
     {
         while (enumerator.MoveNext())
         {
             ResourcesMemoryTracker.TrackTypeInfo current = enumerator.get_Current();
             this.DoTrack(current);
         }
     }
 }
    private void DoTrack(ResourcesMemoryTracker.TrackTypeInfo info)
    {
        uint num = 0u;
        List <ResourcesMemoryTracker.ObjectInfo> list = new List <ResourcesMemoryTracker.ObjectInfo>();

        Object[] array  = Object.FindObjectsOfTypeIncludingAssets(info.TrackType);
        Object[] array2 = array;
        for (int i = 0; i < array2.Length; i++)
        {
            Object obj = array2[i];
            ResourcesMemoryTracker.ObjectInfo objectInfo = new ResourcesMemoryTracker.ObjectInfo(obj);
            list.Add(objectInfo);
            num += objectInfo.Size;
        }
        this.Log("-----------{0} size: {1}  percent: {2}--------------", new object[]
        {
            info.TrackType.get_Name(),
            this.ToMB(num),
            this.ToPercent(num / ResourcesMemoryTracker.TotalAllocatedMemory)
        });
        if (info.GroupFunction != null)
        {
            using (IEnumerator <IGrouping <object, ResourcesMemoryTracker.ObjectInfo> > enumerator = Enumerable.GroupBy <ResourcesMemoryTracker.ObjectInfo, object>(list, info.GroupFunction).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    IGrouping <object, ResourcesMemoryTracker.ObjectInfo> current = enumerator.get_Current();
                    this.Log("---group {0} begin---", new object[]
                    {
                        current.get_Key()
                    });
                    uint num2 = 0u;
                    List <ResourcesMemoryTracker.ObjectInfo> list2 = Enumerable.ToList <ResourcesMemoryTracker.ObjectInfo>(current);
                    list2.Sort(delegate(ResourcesMemoryTracker.ObjectInfo x, ResourcesMemoryTracker.ObjectInfo y)
                    {
                        if (x.Size != y.Size)
                        {
                            return(y.Size.CompareTo(x.Size));
                        }
                        return(x.Name.CompareTo(y.Name));
                    });
                    using (List <ResourcesMemoryTracker.ObjectInfo> .Enumerator enumerator2 = list2.GetEnumerator())
                    {
                        while (enumerator2.MoveNext())
                        {
                            ResourcesMemoryTracker.ObjectInfo current2 = enumerator2.get_Current();
                            num2 += current2.Size;
                            this.LogObjectInfo(current2);
                        }
                    }
                    this.Log("---group {0} end : size: {1}   percent: {2}", new object[]
                    {
                        current.get_Key(),
                        this.ToMB(num2),
                        this.ToPercent(num2 / num)
                    });
                }
            }
        }
        else
        {
            using (IEnumerator <ResourcesMemoryTracker.ObjectInfo> enumerator3 = Enumerable.OrderByDescending <ResourcesMemoryTracker.ObjectInfo, uint>(list, (ResourcesMemoryTracker.ObjectInfo x) => x.Size).GetEnumerator())
            {
                while (enumerator3.MoveNext())
                {
                    ResourcesMemoryTracker.ObjectInfo current3 = enumerator3.get_Current();
                    this.LogObjectInfo(current3);
                }
            }
        }
    }