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