虽然试图用托管nt服务重现报告的问题,但我注意到性能计数器“Jitted方法数量”不断增加(连同“IL字节数Jitted”)。报告的行为包括大量的内存(不一定是机器上可用的所有内存)并消耗100%的CPU。对此nt服务的请求(通过wcf)通常会导致超时,即超过90秒。 (这些请求源于同一台机器上的一个asp.net站点。)应该如何解释性能计数器“Jitted方法”?
经过15分钟预热时间后,数值为127k(3610kb),经过一小时后为246k(6427kb),即增加119k jitted方法。
我不认为这是单独的这种行为导致报告的问题,因为报告的运行时间之前破坏只有几个小时。
但是,我仍然对如何解释这[显然]不断增加的数字感兴趣。虽然每小时只有3 MB,但每周将达到500 MB。而且,任何人都知道“IL字节数”是否是垃圾收集的主题?
(期间拍摄20分钟的时间写这篇文章的方法的人数增加了33K,和字节数与〜300K)
澄清,我应该提到第一次
事...;)
- 我们没有创建,加载或卸载任何应用程序域的代码。
- 我们没有发现任何东西,并且使用C#3,所以没有动态对象。
- 我们使用NHibernate和AutoMapper,都使用反射来解决他们的目标。但是,我认为这些库行为良好,并且不会导致这种行为。 (在那里的任何工具,它让我看到的即时编译哪些方法?)
变化
- 删除的代码行数和实时编译的方法数之间的比较。 Oded指出,该计数器还包括.NET Framework中的方法。