.net内存泄漏

网友投稿 287 2022-12-02

.net内存泄漏

使用以下两个工具进行分析 dotnet-dounters dotnet-dump

安装

dotnet tool install --global dotnet-counters dotnet tool install --global dotnet-dump

查看进程信息并找到进程编号

dotnet-counters ps

监视进程

dotnet-counters monitor -p 14660 --refresh-interval 1 监视id为14660的进程,每隔1秒钟刷新一次。

输出含义如下

[System.Runtime]% Time in GC since last GC (%) 0 #GC垃圾回收百分比Allocation Rate (B / 1 sec) 73,440 #内存分配量CPU Usage (%) 0 #CPU使用率Exception Count (Count / 1 sec) 0 #异常数量GC Fragmentation (%) 5.437#GC 堆碎片率GC Heap Size (MB) 22 #GC堆内存分配量(消耗内存)Gen 0 GC Count (Count / 1 sec) 0 #0代垃圾回收次数Gen 0 Size (B) 1,042,696 #0代垃圾回收大小Gen 1 GC Count (Count / 1 sec) 0 #1代垃圾回收次数Gen 1 Size (B) 180,520 #1代垃圾回收大小Gen 2 GC Count (Count / 1 sec) 0 #2代垃圾回收次数Gen 2 Size (B) 2,014,768 #2代垃圾回收大小IL Bytes Jitted (B) 448,237 #JIT编译的IL总节数LOH Size (B) 16,875,680 #大对象占用内存(大于85000字节的对象)Monitor Lock Contention Count (Count / 1 sec) 0 #锁竞争次数Number of Active Timers 3 #活动计数器Number of Assemblies Loaded 108 #程序集加载数量Number of Methods Jitted 6,086 #JIT编译的方法总数POH (Pinned Object Heap) Size (B) 113,608 #固定对象堆的字节数ThreadPool Completed Work Item Count (Count / 1 sec) 2 #线程池完成任务数量ThreadPool Queue Length 0 #线程池工作项队列长度ThreadPool Thread Count 5 #线程池线程数量

转储内存文件

dotnet-dump collect -p 10232 (进程编号)

分析

dotnet-dump analyze dump_20210825_225811.dmp(转储文件名)

进入分析模式后查看内存占用

dumpheap -stat

分析类型具体对象

dumpheap -mt 00007ffe88612360

gcroot -all 000002c054600480 对象编号

开启GC高并发回收

项目文件中添加

falsetrue

参考​​​C# 性能诊断工具 dotnet-counters 的使用​​​​调查性能计数器 (dotnet-counters)​​​​.net最佳实践二:使用finalize/dispose模式提升垃圾回收器性能​​​​.NET Best Practice No: 2: Improve garbage collector performance using finalize/dispose pattern​​​​『内存泄露』在生产环境中,.Net如何定位系统内存泄露具体位置​​​​利用dotnet-dump分析docker容器内存泄露​​​​dotnet-dump analyze 内存泄漏分析​​​​.net Core 内存过高问题解决方案​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:jenkins 脚本安装多个插件 git提交后自动部署
下一篇:java与scala数组及集合的基本操作对比
相关文章

 发表评论

暂时没有评论,来抢沙发吧~