Beispiel #1
0
        private void CleanWorkspaceMemory()
        {
            if (!m_collectMemoryAsSoonAsPossible)
            {
                return;
            }

            // Clean up pools used by parsing/typechecking.
            TypeScript.Net.Utilities.Pools.Clear();

            var weakReference = GetWorkspaceAnchorAndReleaseWorkspace();

            if (weakReference == null)
            {
                // Nothing to do, workspace is empty.
                return;
            }

            GC.Collect();

            if (FrontEndConfiguration.FailIfWorkspaceMemoryIsNotCollected())
            {
                Contract.Assert(!weakReference.IsAlive, "Failed to collect workspace");
            }
        }
        private void CleanWorkspaceMemory()
        {
            if (!m_collectMemoryAsSoonAsPossible)
            {
                return;
            }

            // Clean up pools used by parsing/typechecking.
            TypeScript.Net.Utilities.Pools.Clear();

            var weakReference = GetWorkspaceAnchorAndReleaseWorkspace();

            if (weakReference == null)
            {
                Logger.FrontEndWorkspaceMemoryCollectionSkipped(LoggingContext, "Can't find a weak reference pointing to parsed source file");
                // Nothing to do, workspace is empty.
                return;
            }

            GC.Collect();

            if (weakReference.IsAlive)
            {
                Logger.FrontEndWorkspaceMemoryNotCollected(LoggingContext);
            }
            else
            {
                Logger.FrontEndWorkspaceMemoryCollectedSuccessfully(LoggingContext);
            }

            if (FrontEndConfiguration.FailIfWorkspaceMemoryIsNotCollected())
            {
                Contract.Assert(!weakReference.IsAlive, "Failed to collect workspace");
            }
        }