调优---内存泄漏的解决办法

安装 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  以及完整调用链  

其实这只是为了找到具体问题 我们应该深思 使用静态对象的时候需要谨慎 因为静态对象不会被回收

 

posted @ 2021-10-30 12:34  三五八团楚云飞  阅读(131)  评论(0)    收藏  举报