c# 排查cpu高的函数和内存高的对象

一,背景

最近自己对c# 写的程序进行优化,我首先看代码,分析哪些代码是有问题,这种方式最枯燥,效率也不高,很难发现代码有问题。于是我发现c# 调试会有一个诊断工具,我们可以对内存快照和cpu使用率进行记录

二,逻辑

这种分析通过内存对象引用对象和占内存大小,进行分析,内存分析比较麻烦,必须自己对程序有比较多理解,结合逻辑分析。

CPU分析比较简单,通过时间段分析,哪些占用CPU比较高,然后对应分析就能很快分析出来。

三,例子

待补充,等以后专门记录分析。暂时记录一下,一个知识点记录。

自己也有别的内存泄漏分析工具,但实际效果不是那么好,虽然有一些帮助,这类解决分析,还是看应用和调用过程,如果引用的数目过高,如果不符合自己预期,基本就是有泄漏了。我觉得c#内存泄漏反而不是那么好排查,如果c++ 可能好一点,因为c#有GC,什么时候被释放这个是底层来实现的。c++ 我直接delete,我只要记录哪些是New的对象,然后过一段时间后,然后去检测没有被释放对象有哪些,再根据代码就比较容易找出来。