我已将ASP.NET Core项目升级到VS2017和新的csproj,并且有以下选项:
<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
什么是服务器垃圾收集?没有适当的文件,只是一个migration guide,假设你已经知道它是什么.
(除非有正式文件,否则请让我知道.)
总结:遗憾的是,文档中没有关于大量基础技术的详细信息.不过,@ PanagiotisKanavos的链接对于“server gc”here来说非常重要.
解决方法
似乎是正常(工作站)和并发(服务器)垃圾收集策略之间的区别.基本上,工作站方法在许多极端情况下遇到问题.而且大量的多线程方案(如ASP Webservers)是极端情况的主要例子:
请注意,并发GC具有弱引用和碎片整理的自然问题,但如果适用于.NET Core实现超出了我的知识范围. .NET核心团队可以对代码进行各种改进,并进入设计GC内存管理器的领域.
也许它只定义了标记部分将使用多少个并发线程(工作站默认值为1).它还可能包括一些修改的内存分配策略,以避免诸如碎片整理之类的问题.在任何一种情况下,实现集合本质上都必须运行单线程,停止所有被管理的线程,并将受到内存速度而不是cpu速度的限制.