ASP.netcore之Memoryusage-创新互联

Asp .net core内存管理机制

注意:在垃圾回收触发时,除了触发垃圾回收的线程外所有的其他线程都会挂起状态

创新互联公司专注于滁州网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供滁州营销型网站建设,滁州网站制作、滁州网页设计、滁州网站官网定制、微信小程序定制开发服务,打造滁州网络公司原创品牌,更为您提供滁州网站排名全网营销落地服务。

分类:

主要分为server GC 和workstation GC

Server GC:

默认值

用于多核系统,它为每个处理器创建一个GC Heap,并进行并发执行会后操作(在.net framework4.5之前,concurrent这个是默认的,在之后用backgroud替代了)。

特点:初始分配内存大(每个cpu都要分配,它占用内存多),同时该模式认为内存就是用的,不占用就有浪费的行为,同时频繁GC会造成系统资源的浪费,所以,基本上它是有多少内存占用多少内存。

使用场景:服务器上应用少,吃内存的应用

Workstation GC:

workstation GC 发生在触发在用户线程上,用户线程通常是以普通优先级运行,所以该模式下垃圾回收器必须与其他线程竞争CPU时间,当然他不会挂起运行本机代码的线程,但是会引发其他线程的hang住。

它可以是并发模式,也可以禁用并发模式。

使用场景:服务器上应用多,同时需要禁用并发垃圾回收。原因:减少cpu上下文切换,提高机器性能。

这里提一下后台workstation GC

后台workstation GC :后台工作垃圾回收期间对0和1代的回收称为前台垃圾回收,前台垃圾回收时,所有托管线程都将被挂起。

        当后台垃圾回收正在进行并且你已在第 0 代中分配了足够的对象时,CLR 将执行第 0 代或第 1 代前台垃圾回收。

        专用的后台垃圾回收线程将在常见的安全点上进行检查以确定是否存在对前台垃圾回收的请求。

        如果存在,则后台回收将挂起自身以便前台垃圾回收可以发生。 在前台垃圾回收完成之后,专用的后台垃圾回收线程和用户线程将继续。

后台server GC 后台服务垃圾回收:这个是默认的模式,与后台workstation GC功能类似。与workstation GC后台工作垃圾回收区别:一个是多线程,一个是专用的后台垃圾回收线程。

应用

Docker场景

请使用workstation GC模式,即将server GC设置为false即可。

如果用server GC可能会出现容器一直频繁重启的问题(一直达到内存大分配值)。

参考文档:

https://blog.markvincze.com/troubleshooting-high-memory-usage-with-asp-net-core-on-kubernetes/

https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:ASP.netcore之Memoryusage-创新互联
转载来于:http://pwwzsj.com/article/dsccgh.html