Udostępnij za pośrednictwem


gcUnmanagedToManaged MDA

Uwaga

Ten artykuł jest specyficzny dla programu .NET Framework. Nie ma zastosowania do nowszych implementacji platformy .NET, w tym .NET 6 i nowszych wersji.

Asystent gcUnmanagedToManaged zarządzanego debugowania (MDA) powoduje odzyskiwanie pamięci za każdym razem, gdy wątek przechodzi z niezarządzanego do kodu zarządzanego.

Objawy

Aplikacja, która uruchamia niezarządzane składniki użytkownika przy użyciu modelu COM i wywołania platformy, powoduje nieokreślone naruszenie dostępu w środowisku CLR.

Przyczyna

Jeśli aplikacja korzysta ze składników użytkownika niezarządzanych, te składniki mogły uszkodzić stertę zbieraną przez śmieci. Powoduje to naruszenie dostępu w środowisku CLR, gdy moduł odśmiecacz pamięci próbuje przejść graf obiektu.

Rozwiązanie

Włączenie tego asystenta skraca czas między uszkodzeniem niezarządzanego składnika sterty zbieranej przez śmieci, a naruszeniem dostępu przez wymuszenie odzyskiwania pamięci przed każdym przejściem zarządzanym.

Wpływ na środowisko uruchomieniowe

Powoduje odzyskiwanie pamięci za każdym razem, gdy wątek przechodzi z niezarządzanego do kodu zarządzanego.

Wyjście

Ta usługa MDA nie generuje żadnych danych wyjściowych.

Konfigurowanie

<mdaConfig>
  <assistants>
    <gcUnmanagedToManaged/>
  </assistants>
</mdaConfig>

Zobacz też