首页 > 系统相关 >.NET GC的SustainedLowLatency模式引发内存的问题

.NET GC的SustainedLowLatency模式引发内存的问题

时间:2024-01-25 19:46:14浏览次数:28  
标签:Generation System 空白 SustainedLowLatency GC 内存 NET

最近遇到一个问题,应用的内存占用升上去后一直降不下来,打了dump文件后发现GC的Generation 0上有很多空白区间没释放,按道理第0代堆是经常回收的,怎么会有那么多空白区间呢?

查阅了相关文档后,发现这是由代码中的System.Runtime.GCSettings.LatencyMode = System.Runtime.GCLatencyMode.SustainedLowLatency导致。
原本以为SustainedLowLatency只会影响GC第2代堆的回收,但翻阅了文档后,SustainedLowLatency会让堆的空间变大,并且没有内存压力的时候不会去压缩堆的空间,这样会导致更多碎片,这也解释了为什么我会遇到这个Generation 0上这么多空白区间没压缩。MSDN原文如下,可参阅https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/latency

后续移除了SustainedLowLatency模式后,应用的内存虽然有涨上去但是会很快降下来,正常触发了GC,而不是等到感知内存压力后才触发GC。

标签:Generation,System,空白,SustainedLowLatency,GC,内存,NET
From: https://www.cnblogs.com/maomaohere/p/17988003

相关文章

  • Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--PDF预览器框选
    项目地址:Pdfium.Net:https://github.com/1000374/Pdfium.NetPdfiumViewer:https://github.com/1000374/PdfiumViewer框选PDF坐标及区域内文字:关键代码://选中区域的坐标转成相对于pdf的坐标varpoint1=this.PointToPdf(newPoint(_currRect.X,_currRect.Y));varpoint2=......
  • Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--打开大文件处理
    项目地址:Pdfium.Net:https://github.com/1000374/Pdfium.NetPdfiumViewer:https://github.com/1000374/PdfiumViewerPDFium支持打开文件支持传入文件流加载PDF到内存流(此种方式不占用文件):varstream=newMemoryStream(File.ReadAllBytes(fileName));vardoc=PdfDocumentGdi.......
  • Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--快速入门
    Pdfium.Net.Free支持.NETFramework4.0.NETFramework4.5.NETStandard2.0可以和PdfiumViewer.Free共同使用预览pdf,也可以直接引用Pdfium.Net.Free操作pdf,解决部分.NetCore调用的问题,Pdfium.Net.Free封装了现有Pdfium的函数,实现了部分操作pdf的功能,部分功能等待后......
  • c# .Net 常见算法
    1usingSystem.Collections.Generic;2usingSystem.ComponentModel.Design;3usingSystem.Linq;45namespaceTestDelay6{7internalclassProgram8{9staticvoidMain()10{11int[]arry=new......
  • solution-at-agc044-c
    stonantforz正文算得上相当有意思以及启发性的数据结构题了。三进制表示联想到我们可以建立一个三叉树。类似于Trie一样的,按三进制从低位到高位建立一个Trie树。一个非常好的性质这是一个完美三叉树。接下来我们可以考虑怎么维护每一种操作。Salasa舞对于这种操作,相......
  • 三、kubernetes 集群 YAML 文件详解
    1、YAML文件概述k8s集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到YAML格式文件中,我们把这种文件叫做资源清单文件,通过kubectl命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署了。2、YA......
  • 四、kubernetes 核心技术-Pod
    1、Pod概述Pod是k8s系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展Pod对象功能的,比如控制器对象是用来管控Pod对象的,Service或者Ingress资源对象是......
  • 五、kubernetes 核心技术-Controller
    使用deployment部署应用(yaml)kubectlcreatedeploymentweb--image=nginx--dry-run-oyaml>web.yamlvimweb.yaml根据web.yaml创建deploymentkubectlapply-fweb.yaml查看应用kubectlgetpods对外发布(暴露对外端口号)kubectlexposedeploymentweb--p......
  • 六、kubernetes 核心技术-Service
    service基本类型kubectlexpose--helpClusterIP 默认模式,仅用于集群内通信NodePort 接入集群外部的流量,在云环境中添加安全策略后,对应的NodePort可以公网直接访问,nodeport如果不指定固定端口,默认自动分配LoadBalance使用阿里云或腾讯云时,厂商有提供loadBalancer......
  • Ubuntu 20.04修改ip地址(Netplan)
    更新IP地址的步骤Netplan配置文件位于/etc/netplan/下。使用以下命令打开对应目录:cd/etc/netplan/编辑Netplan配置文件sudovi00-installer-config.yaml默认情况下,Ubuntu20.04使用YAML格式编写Netplan配置文件,例如00-installer-config.yaml。配置样例en......