源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

61 lines
2.0 KiB

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;
}
}