jitCompilationStart MDA
當 Just-In-time (JIT) 編譯器開始編譯函式時,會啟動 jitCompilationStart
Managed 偵錯助理 (MDA)。
徵兆
mscorjit.dll 已載入處理序中,因此已是原生映像格式的程式工作集大小會增加。
原因
並非所有程式相依的組件都是以原生格式產生,或者是組件未正確註冊。
解決方案
啟用此 MDA 可讓您識別哪一個函式正在進行 JIT 編譯。 確認包含函式的組件是否以原生格式產生,且已正確註冊。
對執行階段的影響
此 MDA 會在方法剛要進行 JIT 編譯之前記錄訊息,所以啟用此 MDA 會對效能造成重大影響。 如果是內嵌的方法,這個 MDA 就不會另行產生訊息。
輸出
下列程式碼範例會顯示範例輸出。 在本案例中,輸出會顯示組件 Test 中,類別 "ns2.CO" 的方法 "m" 已經過 JIT 編譯。
method name="Test!ns2.C0::m"
組態
下列組態檔顯示的各種篩選器,可用來篩選出第一次 JIT 編譯時要報告哪些方法。 您可以將名稱屬性的值設定為 *,指定回報所有的方法。
<mdaConfig>
<assistants>
<jitCompilationStart>
<methods>
<match name="C0::m" />
<match name="MyMethod" />
<match name="C2::*" />
<match name="ns0::*" />
<match name="ns1.C0::*" />
<match name="ns2.C0::m" />
<match name="ns2.C0+N0::m" />
</methods>
</jitCompilationStart >
</assistants>
</mdaConfig>
範例
下列程式碼範例是用來搭配先前的組態檔。
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
public class Entry
{
public static void Main(string[] args)
{
C0.m();
C1.MyMethod();
C2.m();
ns0.C0.m();
ns0.C0.N0.m();
ns0.C1.m();
ns1.C0.m();
ns1.C0.N0.m();
ns2.C0.m();
ns2.C0.N0.m();
}
}
public class C0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
public class C1
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void MyMethod() { }
}
public class C2
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
namespace ns0
{
public class C0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
public class N0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
}
public class C1
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
}
namespace ns1
{
public class C0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
public class N0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
}
}
namespace ns2
{
public class C0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
public class N0
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void m() { }
}
}
}
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應