Bagikan melalui


memberInfoCacheCreation MDA

Catatan

Artikel ini khusus untuk .NET Framework. Ini tidak berlaku untuk implementasi .NET yang lebih baru, termasuk .NET 6 dan versi yang lebih baru.

Asisten penelusuran kesalahan terkelola memberInfoCacheCreation (MDA) diaktifkan saat cache MemberInfo dibuat. Ini adalah indikasi kuat dari program yang memanfaatkan fitur refleksi yang mahal sumber daya.

Gejala

Set kerja program meningkat karena program menggunakan refleksi yang mahal sumber daya.

Penyebab

Operasi refleksi yang melibatkan objek MemberInfo dianggap mahal sumber daya karena harus membaca metadata yang disimpan di halaman dingin dan secara umum mereka menunjukkan program menggunakan beberapa jenis skenario yang terlambat terikat.

Resolusi

Anda dapat menentukan di mana pantulan digunakan dalam program Anda dengan mengaktifkan MDA ini lalu menjalankan kode Anda dalam debugger atau melampirkan dengan debugger saat MDA diaktifkan. Di bawah debugger, Anda akan mendapatkan jejak tumpukan yang menunjukkan di mana cache MemberInfo dibuat dan dari sana Anda dapat menentukan di mana program Anda menggunakan refleksi.

Resolusi tergantung pada tujuan kode. MDA ini memperingatkan Anda bahwa program Anda memiliki skenario yang terlambat terikat. Anda mungkin ingin menentukan apakah Anda dapat mengganti skenario terikat awal atau mempertimbangkan performa skenario akhir yang terikat.

Efek pada Runtime

MDA ini diaktifkan untuk setiap cache MemberInfo yang dibuat. Dampak performa dapat diabaikan.

Output

MDA mengeluarkan pesan yang menunjukkan cache MemberInfo dibuat. Gunakan debugger untuk mendapatkan jejak tumpukan yang menunjukkan di mana program Anda menggunakan pantulan.

Konfigurasi

<mdaConfig>
  <assistants>
    <memberInfoCacheCreation/>
  </assistants>
</mdaConfig>

Contoh

Kode sampel ini akan mengaktifkan MDA memberInfoCacheCreation.

using System;

public class Exe
{
    public static void Main()
    {
        typeof(object).GetMethods();
    }
}

Lihat juga