首页 > 其他分享 >.Net的性能调优

.Net的性能调优

时间:2023-08-15 20:45:22浏览次数:41  
标签:导致 性能 调优 内存 无法 dotnet Net 溢出 counters

.Net的性能调优

一、.Net Core中的内存泄露

1.1什么是内存溢出和内存泄露

什么叫内存泄露(memory leak)

是指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会到程序造成什么影响,但是如果在内存本身就比较少获取多次导致内存无法正常回收时,就会导致内存不够用,最终导致内存溢出。

什么叫内存溢出 out of memory

指程序申请内存时,没有足够的内存供申请者使用,导致数据无法正常存储到内存中。也就是说给你个int类型的存储数据大小的空间,但是却存储一个long类型的数据,这样就会导致内存溢出。

2.2内存溢出和内存泄露的关系以及区别

1.关系:内存泄露最终会导致内存溢出,由于系统中的内存是有限的,如果过度占用资源而不及时释放,最后会导致内存不足,从而无法给所需要存储的数据提供足够的内存,从而导致内存溢出。导致内存溢出也可能是由于在给数据分配大小时没有根据实际要求分配,最后导致分配的内存无法满足数据的需求,从而导致内存溢出。

2.区别:内存泄露是由于GC无法及时或者无法识别可以回收的数据进行及时的回收,导致内存的浪费;内存溢出是由于数据所需要的内存无法得到满足,导致数据无法正常存储到内存中。内存泄露的多次表现就是会导致内存溢出。

二、调优工具

安装dotnet-counter和dotnet-dump工具。

dotnet tool install --global dotnet-counters
dotnet tool install --global dotnet-dump
(在线上的时候尽量不用,dump的时候会导致应用程序卡住现象)

三、使用情况

检查托管内存的使用情况

在开始收集诊断数据以帮助分析本案例的根本原因时,需要确保实际看到的是内存泄漏(内存增加)。可以使用 dotnet-counters 工具进行确认。

打开控制台窗口并导航到下载并解压缩示例调试目标的目录。 运行目标:

dotnet run

在单独的控制台中,找到处理 ID:

dotnet-counters ps

输出应如下所示:

image-20230815195658204

现使用 dotnet-counters 工具检查托管内存的使用情况。--refresh-interval 指定两次刷新之间的秒数

dotnet-counters monitor --refresh-interval 1 -p 22728
22728代指前面所找到的该程序的处理 ID

实时输出应如下所示

image-20230815195952704

标签:导致,性能,调优,内存,无法,dotnet,Net,溢出,counters
From: https://www.cnblogs.com/MuyingBlog/p/17632386.html

相关文章

  • .Net AsyncLocal介绍
    AsyncLocal的基本概念AsyncLocal是一个在异步环境中存储和传递状态的类型。它允许你在线程或任务之间共享数据,而不会受到异步上下文切换的影响。每一个异步的AsyncLocal的数据都是独立的AsyncLocal主要是用来在同一个异步控制流内共享对象的,如:一个web请求经过多个async/await......
  • Net6.0 集成 Nacos
    1-创建一个WebApi2-添加引用Install-Packagenacos-sdk-csharp-Version1.3.5Install-Packagenacos-sdk-csharp.AspNetCore-Version1.3.5Install-Packagenacos-sdk-csharp.Extensions.Configuration-Version1.3.53-设置appsettings.json{"Nacos":{......
  • Net6.0 集成 支持 Nacos 的 Ocelot 网关
    1-创建Ocelot网关webapi 2-添加引用https://www.cnblogs.com/wucy/p/13353824.htmlInstall-Packagenacos-sdk-csharp-Version1.3.5Install-PackageOcelot.Provider.Nacos-Version1.3.5Install-PackageOcelot.Provider.Polly-Version1.3.53-配置appset......
  • Python小项目:利用 U-net 完成细胞图像分割
    文章目录1前言2实验概述3U-net概述4实验过程及代码5结语完整数据集下载:下载链接1前言在当今数字化时代,图像处理和分析已经成为了科学研究和技术应用领域的关键部分。在生物医学领域,图像分析对于诊断、治疗和疾病研究具有重要意义。本项目将带您深入了解U-net细胞分割技......
  • 计算机视觉智能中医(七):基于Unet模型的舌面裂纹自动分析
    此方法的具体细节与舌体分割类似,只是所用到的数据集不同!代码参照:计算机视觉智能中医(三):基于Unet模型的舌头舌体图片分割舌裂,即舌面裂纹。在中医诊断中健康人群的舌面看起来比较光滑,而舌体上出现各式各样的裂纹往往预示着患有一些疾病。舌裂的提取非常困难,舌面上的裂纹色值与普通舌面......
  • Kubernetes部署v1.26.0
    一,准备环境主机名ip地址节点类型系统版本k8s01192.168.0.180master、etcdcentos7k8s02192.168.0.41workercentos7k8s03192.168.0.241workercentos7  二,配置环境1.修改主机[root@ecs-kmaster~]#hostnamectlset-hostnamekmaster[root@ecs-kma......
  • Asp.net WebAPI中Controller的方法在接受到json时序列化都为null的问题
    原因是,webapi默认不序列化字段,只序列化属性只需要把字段改成属性即可 ------------------改成---------------- ......
  • Kubernetes实战基础(五)
    本章节将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其进行访问。5.1NamespaceNamespace是k8s系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。默认情况下,k8s集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不......
  • 紫光展锐T310(虎贲310)_芯片性能介绍_全国产安卓核心板定制
    紫光展锐T310核心板是全球首款基于DynamIQ架构的4核LTE平台,可实现优异的运算性能及低功耗管理,在单核场景下性能比目前主流4核产品提高120%,多核场景下性能提升超过20%,为全球主流市场用户提供流畅的应用体验。展锐T310(虎贲310)安卓核心板基本概述虎贲T310是可运行android11.0操作......
  • Kubernetes介绍(一)
    k8s是一组服务器集群,K8s所管理的集群节点上的容器1.1kubernetes简介官方网站Kubernetes是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。它拥有一个庞大且快速增长的生态系统。Kubernetes的服务,支持和工具广泛可用。Kubernetes......