当没有新代码运行时,为什么JIT会在程序中间运行?

时间:2012-10-05 18:17:06

标签: c#-4.0 .net-4.0 clr jit

我在托管.Net 4.0代码的一些网络服务器上运行了一些性能测试。我注意到JIT计数器中的百分比在测试过程中似乎会随机出现。

这些测试非常简单,它们都运行相同的代码。没有其他人访问这些服务器,所以它只运行我放在那里的代码,并且我只测试了一个代码路径。

在一小时的测试中,我会看到JIT计数器的百分比高达50%-100%,大约30-40次。它只是在很短的时间内,其余的时间只有0%,但我想不出有任何理由发生这种情况。我做了所有正常检查事件日志并查找不同日志文件中的错误,但一切似乎都正常运行,所以它甚至不像捕获和异常并运行不同的代码。

我意识到这是一个模糊的问题,我确信有几千种不同的原因可以让JIT编译器运行,但我希望有人可能知道为什么它会在代码中出现的一些常见原因。当没有任何新的代码路径被运行时,已经“热身”了。或者,如果这只是正常的日常行为。

0 个答案:

没有答案