C#:列出日志文件中的所有变量及其内存使用情况

C#:列出日志文件中的所有变量及其内存使用情况,c#,C#,我正在做一个C#service项目,这是一个TCP服务器。当我启动我的服务时,它的内存使用量大约为40MB,但随着时间的推移,它的内存使用量增加了一倍-三倍。我知道C#是垃圾收集的,但应用程序存在一些问题 我在我的应用程序中使用Log4net,我使用Entity framework在数据库中存储数据并管理传入数据 是否有一种方法可以列出RAM中的所有内存变量,并在日志文件中按大小降序排序?或者,有没有更好的方法来调试此类问题(如实时分析)?您可以使用windbg进行尝试 !dumpheap -

我正在做一个C#service项目,这是一个TCP服务器。当我启动我的服务时,它的内存使用量大约为40MB,但随着时间的推移,它的内存使用量增加了一倍-三倍。我知道C#是垃圾收集的,但应用程序存在一些问题

我在我的应用程序中使用Log4net,我使用Entity framework在数据库中存储数据并管理传入数据


是否有一种方法可以列出RAM中的所有内存变量,并在日志文件中按大小降序排序?或者,有没有更好的方法来调试此类问题(如实时分析)?

您可以使用windbg进行尝试

 !dumpheap -stat
如上所述和

查看输出中的列,MT代表方法表,基本上是指向描述该类型对象的表的指针。Count是给定类型堆中存在的对象数。TotalSize是任何一种类型的对象正在消耗的内存量。最后一列显然是对象的全类型名称

还可以考虑一个开源C#项目,该项目分析WinDBG命令行版本的输出,以更好地显示数据。您还可以显示内存中加载的所有.Net类型及其“总大小”的列表。

一般来说,可能有很多原因,可能是线程泄漏,是否只有一个线程接受所有连接

否则,您可以采取和您的过程