clr的原因!JIT_New在PerfView CPU堆栈

本文关键字:New PerfView CPU 堆栈 JIT clr | 更新日期: 2023-09-27 18:16:36

我正在使用PerfView来调整应用程序,第二昂贵的项目目前标记为:

其他& lt;& lt;clr !JIT_New>>

在超过10%的CPU。这甚至在测试用例的后续运行中继续进行。

谁能确定哪些活动或代码实践可能导致需要JIT-ting的新代码的动态生成?

clr的原因!JIT_New在PerfView CPU堆栈

JIT_New()是CLR中的一个辅助函数,每当您在代码中使用new操作符创建新对象时,它都会运行。它只是从垃圾收集堆中分配内存并调用类构造函数。或者换句话说,它实现了操作码。Newobj IL指令。它的名字有点令人困惑,它与您的代码没有任何关系。只是一个抖动知道的辅助函数,它将对这个辅助函数的调用直接编译到生成的机器代码中。JIT_Newarr1()是另一个你会遇到的,它分配一个数组。

我不知道PerfView,请注意JIT_New() 的执行时间可能包括执行垃圾收集所需的时间。当JIT_New()运行时,第0代堆已满时发生这种情况。这就解释了为什么会有这么大的百分比,JIT_New()在其他方面非常快。您对此无能为力,这是任何托管程序的固定开销。