Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 诊断";%“垃圾收集时间”;问题_Asp.net_Debugging_Garbage Collection - Fatal编程技术网

Asp.net 诊断";%“垃圾收集时间”;问题

Asp.net 诊断";%“垃圾收集时间”;问题,asp.net,debugging,garbage-collection,Asp.net,Debugging,Garbage Collection,我有一个ASP.NET 2.0应用程序,当在生产级服务器(双四核,4g)上进行负载测试时,它在垃圾收集上花费的时间超过40%。 我一直在尝试隔离这个问题,但它是一个庞大而复杂的代码库,导致运行缓慢。没有GC.Collect()调用。当试图隔离这类问题时,哪些工具、技术等是有用的?首先,我的技巧膝盖出现了问题,当它出现问题时,要么意味着即将下雪,要么有人在字符串连接中使用了大量“+”操作符,而不是像上帝所希望的那样使用StringBuilder 那怎么办?我很早以前就用过了,很喜欢。还有一个可以用

我有一个ASP.NET 2.0应用程序,当在生产级服务器(双四核,4g)上进行负载测试时,它在垃圾收集上花费的时间超过40%。
我一直在尝试隔离这个问题,但它是一个庞大而复杂的代码库,导致运行缓慢。没有GC.Collect()调用。当试图隔离这类问题时,哪些工具、技术等是有用的?

首先,我的技巧膝盖出现了问题,当它出现问题时,要么意味着即将下雪,要么有人在字符串连接中使用了大量“+”操作符,而不是像上帝所希望的那样使用StringBuilder


那怎么办?我很早以前就用过了,很喜欢。还有一个可以用来捕获自己数据的工具。

首先使用分析应用程序(它有一个用于显示收集数据的漂亮GUI,而且是免费的!)。可以找到有关如何评测ASP.Net应用程序的具体说明,这是GC关于内存/性能问题、评测和.Net CLR评测器的一个很好的概述。

尝试查看您的团队中是否有人实际重写了
Dispose()
方法以频繁调用
GC.Collect()
。这发生在我的团队身上,情况非常糟糕,其中一个
Dispose()
方法花了整整一秒钟的时间执行


这是我唯一能想象你的服务器将40%的时间花在垃圾收集上的方法。

我发现调试实验室在研究这些问题时非常有用。

我发现GC在整个应用程序崩溃前不久就消耗了100%的CPU时间。问题是一次泄漏20mb的“对象泄漏”。最终GC放弃了尝试,内存耗尽


您可以看到它使用perfmon执行此操作的时间有多长,因为有一个GC对象具有相当多的计数器

那个网站太棒了。这个问题实际上让我想到了,但你抢先了我一步