From 9fcbdbab2512379451972bd65929a9939239853c Mon Sep 17 00:00:00 2001 From: ryuukk <44361234+ryuukk@users.noreply.github.com> Date: Tue, 27 Aug 2024 09:58:59 +0200 Subject: [PATCH 1/2] Optimize memory usage --- dsymbol/src/dsymbol/modulecache.d | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dsymbol/src/dsymbol/modulecache.d b/dsymbol/src/dsymbol/modulecache.d index ca1ba9ff..492d2051 100644 --- a/dsymbol/src/dsymbol/modulecache.d +++ b/dsymbol/src/dsymbol/modulecache.d @@ -149,6 +149,7 @@ struct ModuleCache DSymbol* cacheModule(string location) { import std.stdio : File; + import core.memory: GC; assert (location !is null); @@ -160,6 +161,8 @@ struct ModuleCache if (!needsReparsing(cachedLocation)) return getEntryFor(cachedLocation).symbol; + scope(exit) GC.collect(); + recursionGuard.insert(&cachedLocation.data[0]); File f = File(cachedLocation); From 05e94873c3883bc15f072378e7cf0b0643073053 Mon Sep 17 00:00:00 2001 From: ryuukk <44361234+ryuukk@users.noreply.github.com> Date: Tue, 27 Aug 2024 10:13:49 +0200 Subject: [PATCH 2/2] Also call gc.collect after a complete request --- src/dcd/server/autocomplete/complete.d | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/dcd/server/autocomplete/complete.d b/src/dcd/server/autocomplete/complete.d index 66228906..32d3233a 100644 --- a/src/dcd/server/autocomplete/complete.d +++ b/src/dcd/server/autocomplete/complete.d @@ -65,6 +65,9 @@ enum CalltipHint { public AutocompleteResponse complete(const AutocompleteRequest request, ref ModuleCache moduleCache) { + import core.memory: GC; + scope(exit) GC.collect(); + const(Token)[] tokenArray; auto stringCache = StringCache(request.sourceCode.length.optimalBucketCount); auto beforeTokens = getTokensBeforeCursor(request.sourceCode,