介绍
dotnet-dump 是 .NET Core 官方工具之一,用于生成和分析 .NET Core 进程的转储文件(dump file)。它可以帮助开发人员在应用程序发生故障或性能问题时进行故障排查和诊断。
Linux 系统上的软件包的工具
- RedHat系列使用(Centos)
yum
- Debian系列使用
apt
dotnet-dump安装
先安装dotnet-sdk
- 将 Microsoft 的官方包存储库配置文件安装到 CentOS 7 系统中
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
- 安装运行时
sudo yum install dotnet-sdk-7.0
- 查看当前版本-是否安装成功
dotnet --version
安装dotnet-dump
安装最新的即可,我的代码是asp.core3.1 也可以高版本排查dotnet tool install --global dotnet-dump
查看当前版本-是否安装成功dotnet-dump --version
生成转储文件(内存文件)
dotnet-dump collect -p 10232
分析转储文件
dotnet-dump analyze core_20231222_201626
分析SOS命令
- 找到内存比较大的类型,通过查看内存占用大小和对象数量
dumpheap -stat
默认从小到大,直接拉到最下面,看最大的对象 - 然后分析类型具体对象
umpheap -mt 命令,您可以快速查找指定类型的对象,了解其在堆上的分布情况和内存占用情况。这对于定位内存泄漏、查找内存使用问题等非常有用。dumpheap 7f9d28ec8b68
- 然后找出的应用根(目的是找出在哪里被引用了)
gcroot 7f9a14da0448