public static void Main(string[] args) { GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency; //GCSettings.LatencyMode = GCLatencyMode.LowLatency; Console.WriteLine("Is server GC: " + GCSettings.IsServerGC); Console.WriteLine("Latency Mode: " + GCSettings.LatencyMode); var dataFilePath = "/tmp/data/data.zip"; var optionsPath = "/tmp/data/options.txt"; var extractPath = "zip"; var retriever = new FileReader(); var dataLoader = new DataLoader(); var accountsFileCount = retriever.ReadAccountFilesCount(dataFilePath); var accountsCount = (int)(accountsFileCount * 10000) + 22000; var inMemory = new InMemoryRepository(accountsCount); Holder.Instance.InMemory = inMemory; var updater = new RepositoryUpdater(inMemory); Holder.Instance.Updater = updater; dataLoader.Load(dataFilePath, extractPath, optionsPath, inMemory, updater, retriever); Holder.Instance.Filter = new Filter(inMemory); Holder.Instance.Group = new Group(inMemory, new GroupFactory(inMemory)); Holder.Instance.GroupQueryParser = new GroupQueryParser(); Holder.Instance.Recommend = new Recommend(inMemory); Holder.Instance.Suggest = new Suggest(inMemory); var sw = new Stopwatch(); sw.Start(); inMemory.CreateMainIndexes(false, sw); sw.Stop(); TotalMemoryHelper.Show(); GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; GC.Collect(); GC.WaitForFullGCComplete(); TotalMemoryHelper.Show(); CreateWebHostBuilder(args).Build().Run(); }