internal static string GetAliveManagedObjectNames() { string str = ""; lock (ManagedObjectOwner._managedObjectOwnerReferences) { Dictionary <string, int> dictionary = new Dictionary <string, int>(); foreach (WeakReference weakReference in ManagedObjectOwner._managedObjectOwners.Values) { ManagedObjectOwner target = weakReference.Target as ManagedObjectOwner; if (!dictionary.ContainsKey(target._typeInfo.Name)) { dictionary.Add(target._typeInfo.Name, 1); } else { dictionary[target._typeInfo.Name] = dictionary[target._typeInfo.Name] + 1; } } foreach (string key in dictionary.Keys) { str = str + key + "," + (object)dictionary[key] + "-"; } } return(str); }
internal static void PreFinalize() { Managed.Closing = true; Managed._moduleTypes = (Dictionary <string, Type>)null; ManagedObjectOwner.PreFinalizeManagedObjects(); Common.MemoryCleanup(); }
internal static void ApplicationTick(float dt) { ManagedObject.HandleManagedObjects(); DotNetObject.HandleDotNetObjects(); NativeObject.HandleNativeObjects(); ManagedObjectOwner.GarbageCollect(); Managed.TelemetryLevelMask = LibraryApplicationInterface.ITelemetry.GetTelemetryLevelMask(); for (int index = 0; index < Managed._components.Count; ++index) { Managed._components[index].OnApplicationTick(dt); } }
internal static void ManagedObjectGarbageCollected( ManagedObjectOwner owner, ManagedObject managedObject) { lock (ManagedObjectOwner._managedObjectOwnerReferences) { if (owner == null || owner._managedObjectLongReference.Target as ManagedObject != managedObject) { return; } ManagedObjectOwner._lastframedeletedManagedObjects.Add(owner); ManagedObjectOwner._managedObjectOwnerReferences.Remove(owner); } }
static ManagedObjectOwner() { ManagedObjectOwner._managedObjectOwners = new Dictionary <int, WeakReference>(); ManagedObjectOwner._lastframedeletedManagedObjects = new List <ManagedObjectOwner>(); ManagedObjectOwner._managedObjectOwnerReferences = new HashSet <ManagedObjectOwner>(); ManagedObjectOwner._lastframedeletedManagedObjectBuffer = new List <ManagedObjectOwner>(1024); ManagedObjectOwner._pool = new List <ManagedObjectOwner>(8192); ManagedObjectOwner._managedObjectOwnerWeakReferences = new List <WeakReference>(8192); for (int index = 0; index < 8192; ++index) { ManagedObjectOwner managedObjectOwner = new ManagedObjectOwner(); ManagedObjectOwner._pool.Add(managedObjectOwner); WeakReference weakReference = new WeakReference((object)null); ManagedObjectOwner._managedObjectOwnerWeakReferences.Add(weakReference); } }
internal static ManagedObjectOwner CreateManagedObjectOwner( UIntPtr ptr, ManagedObject managedObject) { ManagedObjectOwner managedObjectOwner; if (ManagedObjectOwner._pool.Count > 0) { managedObjectOwner = ManagedObjectOwner._pool[ManagedObjectOwner._pool.Count - 1]; ManagedObjectOwner._pool.RemoveAt(ManagedObjectOwner._pool.Count - 1); } else { managedObjectOwner = new ManagedObjectOwner(); } managedObjectOwner.Construct(ptr, managedObject); lock (ManagedObjectOwner._managedObjectOwnerReferences) { ++ManagedObjectOwner._numberOfAliveManagedObjects; ManagedObjectOwner._managedObjectOwnerReferences.Add(managedObjectOwner); } return(managedObjectOwner); }
internal static void OnFinalize() { ManagedObject.FinalizeManagedObjects(); Common.MemoryCleanup(); ManagedObjectOwner.LogFinalize(); }
internal void SetOwnerManagedObject(ManagedObjectOwner owner) => this._managedObjectOwner = owner;
internal static string GetCreationCallstack(string name) => ManagedObjectOwner.GetAliveManagedObjectCreationCallstacks(name);
internal static string GetAliveManagedObjectNames() => ManagedObjectOwner.GetAliveManagedObjectNames();
internal static void PreFinalizeManagedObjects() => ManagedObjectOwner.GarbageCollect();