调优---内存泄漏的解决办法
安装 dotnet-counters
查看进程号 dotnet-counters ps
监控进程 dotnet-counters monitor --refresh-interval 1 -p 43332(进程编号
找到 GC Heap Size 。然后统计这个程序的增长,为了找出内存泄露的代码
当你发现Gc Heap size 在增大时 你应该搜集 该进程的内存情况 内存拍照 使用 dotnet-dump collect -p 43332(进程编号)
拍照后默认生成dmp文件 我们需要对这个文件进行分析 使用命令
dotnet-dump analyze core_20190430_185145(转储文件名)---》该命令表示进入该文件
进行具体分析
dumpheap -stat 将展示所有对象在堆中的分布情况 以对象大小排序 你只需要看最后一个

解释一下 表头
MT: 对象 在内存中的编号
Count 该类型对象有多少个
TotalSize 占用大小
Class Name 类型名称
定位最后一个

我们只需要分析类型具体对象 l列出所有对象
dumpheap -mt 00007ffdbee01e18 为类型编号
随便选择一个进行分析 该对象在什么时候被执行
gcroot -all 00007f6ad09421f8 对象编号

直接定位到具体webapi 以及完整调用链
其实这只是为了找到具体问题 我们应该深思 使用静态对象的时候需要谨慎 因为静态对象不会被回收

浙公网安备 33010602011771号