|
|
- using System;
- using UnityEditor.MemoryProfiler;
- using UnityEngine;
-
- namespace MemoryProfilerWindow
- {
- //this is the highest level dataformat. it can be unpacked from the PackedCrawledMemorySnapshot, which contains all the interesting information we want. The Packed format
- //however is designed to be serializable and relatively storage compact. This dataformat is designed to give a nice c# api experience. so while the packed version uses typeIndex,
- //this version has TypeReferences, and also uses references to ThingInObject, instead of the more obscure object indexing pattern that the packed format uses.
- public class CrawledMemorySnapshot
- {
- public NativeUnityEngineObject[] nativeObjects;
- public GCHandle[] gcHandles;
- public ManagedObject[] managedObjects;
- public StaticFields[] staticFields;
-
- //contains concatenation of nativeObjects, gchandles, managedobjects and staticfields
- public ThingInMemory[] allObjects;
-
- public MemorySection[] managedHeap;
- public TypeDescription[] typeDescriptions;
- public PackedNativeType[] nativeTypes;
- public VirtualMachineInformation virtualMachineInformation;
- }
-
- public class ThingInMemory
- {
- public int size;
- public string caption;
- public ThingInMemory[] references;
- public ThingInMemory[] referencedBy;
- }
-
- public class ManagedObject : ThingInMemory
- {
- public UInt64 address;
- public TypeDescription typeDescription;
- }
-
- public class NativeUnityEngineObject : ThingInMemory
- {
- public int instanceID;
- public int classID;
- public string className;
- public string name;
- public bool isPersistent;
- public bool isDontDestroyOnLoad;
- public bool isManager;
- public HideFlags hideFlags;
- }
-
- public class GCHandle : ThingInMemory
- {
- }
-
- public class StaticFields : ThingInMemory
- {
- public TypeDescription typeDescription;
- public byte[] storage;
- }
- }
|