gcUnmanagedToManaged MDA
每當執行緒從 Unmanaged 轉換至 Mananged 程式碼時,gcUnmanagedToManaged Managed 偵錯助理 (MDA) 就會造成記憶體回收。
症狀
使用 COM 和平台叫用 (Invoke) 來執行 Unmanaged 使用者元件的應用程式,在 CLR 中造成非決定性的存取違規。
原因
如果應用程式在執行 Unmanaged 使用者元件,那些元件可能已經損毀了記憶體回收堆積 (Heap)。 如此,當記憶體回收行程嘗試對物件 Graph 查核行程時,就會造成 CLR 中發生存取違規。
解決方式
啟用這個助理可以減少在 Unmanaged 元件損毀記憶體回收堆積,以及強制在每次 Mananged 轉換之前執行記憶體回收,因而發生存取違規之間的時間。
對執行階段的影響
每當執行緒從 Unmanaged 轉換到 Managed 程式碼時,都會造成記憶體回收。
Output
這個 MDA 不會產生輸出。
組態
<mdaConfig>
<assistants>
<gcUnmanagedToManaged/>
</assistants>
</mdaConfig>