• netcore项目中的GC模式


    1.微软官网GC模式介绍:
    GC模式

    垃圾回收(GC)是托管语言必备的技术之一。GC 的性能是影响托管语言性能的关键。我们的 .NET 既能写桌面程序 (WINFROM , WPF) 又能写 web 程序 (ASP.NET CORE),甚至还能写移动端程序。。。不同使用场景的程序对 GC 的风格也有不同的要求,比如桌面程序更注重界面的响应速度,web 程序注重的是吞吐量。有幸的是 CLR 为我们提供了2种不同的 GC 模式与风格。

    2.Server GC / Workstation GC

    Workstation GC
    工作站模式被设计为客户端(桌面)程序使用,或者某些只有1个核心的机器使用。工作站模式下 GC 的回收频次会加快,但是每一次 GC 造成的停顿很短暂。工作站模式的垃圾回收直接发生在触发垃圾回收的用户线程上。所以垃圾回收线程需要跟其他用户线程去竞争 CPU 时间。工作站模式下只会分配一个 GC 堆,在工作站模式下 GC 分配的内存会更少。

    Server GC
    服务器模式适合大型的服务端应用,比如 ASP.NET Core 程序。服务器模式下 GC 的回收会尽量的延迟,从而减少停顿。为了获得更高的吞吐量与性能,程序会分配更多的内存(微软官方的说法是分配更多的内存以提高性能)。服务器模式下 CLR 根据 CPU 核心数量来分配 GC 堆的数量。同时为每个 GC 堆分配一个专用线程来执行回收,并且这个线程的优先级为 THREAD_PRIORITY_HIGHEST ,所以在与普通线程竞争的时候更容易获得 CPU 时间。服务器模式通常具有更大容量的内存分段。

    微软官方推荐
    在典型的web服务器环境中,CPU使用率比内存更重要,因此服务器GC更好。如果内存使用率较高,而CPU使用率相对较低,则Workstation GC的性能可能会更高。例如,高密度托管几个内存不足的网络应用程序。
    使用Docker和小型容器的GC:
    当多个容器化应用程序在一台机器上运行时,工作站GC可能比服务器GC更具性能。

    3.两种GC模式设置:
    一般netcore项目下会有一个runtimeconfig.json文件,查看所有文件可以看到,如果是abp框架的项目,比如是api项目,需要到对应项目名下ProjectName.HttpApi.Host.runtimeconfig.json文件.
    格式如下:

    {
      "runtimeOptions": {
        "tfm": "net6.0",
        "frameworks": [
          {
            "name": "Microsoft.NETCore.App",
            "version": "6.0.0"
          },
          {
            "name": "Microsoft.AspNetCore.App",
            "version": "6.0.0"
          }
        ],
        "configProperties": {
          "System.GC.Server": false,
          "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    System.GC.Server对应的配置项就是对应的GC模式,如果 是true,就是服务器模式(Server GC),如果是false就是工作站模式(Workstation GC)。

  • 相关阅读:
    【C语言】auto 关键字
    Vue开发中的一些常见套路和技巧(上)
    【Lychee图床】本地电脑搭建私人图床,公网远程访问
    二维码智慧门牌管理系统:确保数据准确,强制校验GPS信号强度
    视频怎么加水印?这里有你想要的答案
    springboot+基于web的传染病信息管理系统的设计与实现 毕业设计-附源码221124
    算法-打家劫舍
    轴承故障诊断(一维时序信息结合二维图像实现故障诊断,python编程,十分类)
    Asp-Net-Core学习笔记:gRPC快速入门
    Docker:Harbor
  • 原文地址:https://blog.csdn.net/qq_25086397/article/details/133769688