Пример #1
0
 public void LowMemory()
 {
     if (LowMemoryFlag.Raise())
     {
         _nativeMemoryCleaner.CleanNativeMemory(null);
     }
 }
Пример #2
0
        public void LowMemory()
        {
            if (!LowMemoryFlag.Raise())
            {
                return;
            }

            Interlocked.Increment(ref _generation);

            while (_globalQueue.TryDequeue(out var result))
            {
                if (result.InUse.Raise())
                {
                    result.Dispose();
                }
            }

            foreach (var coreContext in _perCoreContexts)
            {
                for (int i = 0; i < coreContext.Length; i++)
                {
                    var context = coreContext[i];
                    if (context != null && context.InUse.Raise())
                    {
                        context.Dispose();
                        Interlocked.CompareExchange(ref coreContext[i], null, context);
                    }
                }
            }
        }