gcManagedToUnmanaged – pomocník spravovaného ladění (MDA)

Pomocník gcManagedToUnmanaged spravovaného ladění (MDA) způsobí uvolňování paměti pokaždé, když vlákno přejde ze spravovaného na nespravovaný kód.

Příznaky

Součást nespravovaného uživatele vyvolá narušení přístupu při pokusu o použití spravovaného objektu, který byl vystaven modelu COM. Zdá se, že objekt COM byl uvolněn. Narušení přístupu je nedeterministické.

Příčina

Pokud nespravovaná komponenta nespravuje odkazy na spravovaný objekt COM správně, modul runtime může shromáždit spravovaný objekt vystavený modelu COM, pokud nespravovaná komponenta stále obsahuje odkaz na objekt. Modul runtime volá Release během uvolňování paměti, takže pokud komponenta uživatele použije objekt před tím, než dojde k uvolňování paměti, pak se ještě neshromažďuje. To je zdroj nedeterminismu.

Řešení

Povolení tohoto pomocníka zkracuje dobu mezi tím, kdy je objekt způsobilý ke kolekci a je volána, což Release pomáhá zjistit, která nespravovaná komponenta se nejprve pokusí o přístup ke shromážděnému objektu.

Vliv na modul runtime

Způsobí uvolňování paměti pokaždé, když vlákno přejde ze spravovaného na nespravovaný kód.

Výstup

Tento mda nevytváří žádný výstup.

Konfigurace

<mdaConfig>  
  <assistants>  
    <gcManagedToUnmanaged/>  
  </assistants>  
</mdaConfig>  

Viz také