Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 internal static void PreFinalize()
 {
     Managed.Closing      = true;
     Managed._moduleTypes = (Dictionary <string, Type>)null;
     ManagedObjectOwner.PreFinalizeManagedObjects();
     Common.MemoryCleanup();
 }
Esempio n. 3
0
 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);
     }
 }
Esempio n. 4
0
 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);
     }
 }
Esempio n. 5
0
 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);
     }
 }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
 internal static void OnFinalize()
 {
     ManagedObject.FinalizeManagedObjects();
     Common.MemoryCleanup();
     ManagedObjectOwner.LogFinalize();
 }
Esempio n. 8
0
 internal void SetOwnerManagedObject(ManagedObjectOwner owner) => this._managedObjectOwner = owner;
Esempio n. 9
0
 internal static string GetCreationCallstack(string name) => ManagedObjectOwner.GetAliveManagedObjectCreationCallstacks(name);
Esempio n. 10
0
 internal static string GetAliveManagedObjectNames() => ManagedObjectOwner.GetAliveManagedObjectNames();
Esempio n. 11
0
 internal static void PreFinalizeManagedObjects() => ManagedObjectOwner.GarbageCollect();