https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/workstation-server-gc?WT.mc_id=DT-MVP-5004444
ASP.NET Core程序默认就是启用的Server模式的GC,所以压力测试结束后,内存也没有回落 。而通过<ServerGarbageCollection>false</ServerGarbageCollection>禁用Server模式的GC之后,GC就变成了Workstation模式后,程序就会更激进地回收内存了 。当然把服务器端程序改为Workstation模式之后,程序的性能就会受影响,因此除非有充足的理由,否则不建议这样做,毕竟对于服务器来讲,内存闲着就是一种浪费 。
除了GC的模式之外,.NET中也像Java的JVM中一样可以设置堆内存的大小、百分比等各种复杂的GC调优参数,详细请阅读微软的文档
https://learn.microsoft.com/en-us/dotnet/core/runtime-config/garbage-collector?WT.mc_id=DT-MVP-5004444
总结:尽量使用LINQ的“流水线”操作,尽量避免对大数据量的数据源进行ToArray()或者ToList();避免手动GC;建立对程序内存占用的正确期望,对于服务器端程序来讲并不是内存占用越低越好;用好GC的模式,从而满足不同程序的性能和内存占用的不同追求;可以通过GC的参数来对于程序的性能进行更加个性化的设置 。
欢迎阅读我编写的《ASP.NET Core技术内幕与项目实战》,这本书的宗旨就是“讲微软文档中没有的内容,讲原理、讲实践、讲架构” 。
推荐阅读
- 美丽|李少莉事件尘埃落定?没有结果就是最好的结果
- 赵文瑄|新冠有没有后遗症?“老戏骨”赵文瑄:病了5天,1月后痊愈
- 2019年日本销量最高的十款车型,没有一款德系车
- 谁说冬天不能穿匡威!几招潮流穿搭,让你帅爆整个冬天
- 刘銮雄|刘銮雄或将再当爷爷,跟儿子已数年没有同框,父子两人感情成谜
- 芒果台|李维嘉,问了杜海涛一句话,没有人理他,快本四人已经离开芒果台
- 女性后腰上两个凹点到底是啥?为什么有的女性有,有的没有?
- B站和西瓜别争了,中国没有Youtube
- 抗战时期八路军一个团有多少人,到底有没有386旅独立团?
- 天下第一|《天下第一》古三通也会吸星大法,为什么没有传授给成是非呢?