Bagikan melalui


Menganalisis penggunaan memori dengan menggunakan alat Alokasi Objek .NET

Anda dapat melihat berapa banyak memori yang digunakan aplikasi Anda dan jalur kode apa yang mengalokasikan memori terbanyak dengan menggunakan alat Alokasi Objek .NET.

Setelah menjalankan alat, Anda dapat melihat jalur eksekusi fungsi tempat objek dialokasikan. Anda kemudian dapat melacak kembali ke akar pohon panggilan yang mengkonsumsi memori paling banyak.

Untuk tutorial yang menunjukkan cara meningkatkan performa menggunakan alat Alokasi Objek .NET, lihat Studi kasus: Panduan pemula untuk mengoptimalkan kode.

Pengaturan

  1. Dalam proyek Visual Studio, atur konfigurasi solusi ke Rilis dan pilih target penyebaran.

    Target penyebaran biasanya cocok dengan nama proyek, menunjukkan penyebaran lokal.

  2. Pilih Alt+F2 untuk membuka Profiler Performa di Visual Studio.

  3. Pilih kotak centang .NET Object Allocation Tracking.

    Cuplikan layar alat Pelacakan Alokasi Objek Dotnet dipilih.

  4. Pilih tombol Mulai untuk menjalankan alat.

    Jika Anda mengaktifkan opsi Mulai dengan koleksi yang dijeda sebelum memulai profiler, data tidak akan dikumpulkan hingga Anda memilih tombol Mulai Merekam dalam tampilan sesi diagnostik.

  5. Setelah alat mulai berjalan, buka skenario yang ingin Anda profilkan di aplikasi Anda. Lalu pilih Hentikan pengumpulan atau tutup aplikasi Anda untuk melihat data Anda.

    Cuplikan layar jendela memperlihatkan Hentikan koleksi.

  6. Pilih tab Alokasi. Data alokasi memori yang mirip dengan yang berikut ini muncul.

    Cuplikan layar Tab Alokasi.

Anda sekarang dapat menganalisis alokasi memori objek.

Selama pengumpulan, alat pelacakan dapat memperlambat aplikasi yang diprofilkan. Jika performa alat pelacakan atau aplikasi lambat, dan jika Anda tidak perlu melacak setiap objek, Anda dapat menyesuaikan laju pengambilan sampel. Untuk melakukannya, pilih simbol roda gigi di samping alat pelacakan di halaman ringkasan profiler.

Cuplikan layar pengaturan untuk alat Alokasi Dotnet. Pengaturan

Sesuaikan laju pengambilan sampel dengan laju yang Anda inginkan. Perubahan ini membantu mempercepat performa aplikasi Anda selama pengumpulan dan analisis.

Cuplikan layar laju pengambilan sampel yang disesuaikan.

Untuk informasi selengkapnya tentang cara membuat alat lebih efisien, lihat Mengoptimalkan pengaturan Profiler.

Memahami data Anda

Dalam tampilan grafis berikut, grafik atas menunjukkan jumlah objek langsung di aplikasi Anda. Grafik delta Objek bagian bawah menunjukkan persentase perubahan objek aplikasi. Bilah merah menunjukkan kapan pengumpulan sampah terjadi.

Cuplikan layar grafik untuk alat Alokasi Dotnet.

Anda dapat memfilter data tabular untuk menampilkan aktivitas hanya untuk rentang waktu tertentu dengan memilih rentang waktu. Saat Anda melakukan ini, informasi yang muncul di tab dilingkup ke rentang waktu yang difilter.

Cuplikan layar grafik yang telah difilter dari waktu alokasi .NET.

Anda juga dapat memperbesar atau memperkecil grafik.

Wawasan

Jika ada wawasan yang muncul dalam tampilan Wawasan , gunakan tautan yang disediakan untuk mendapatkan informasi selengkapnya tentang masalah yang diidentifikasi.

Dapatkan bantuan AI

Jika Anda memiliki Copilot, Anda bisa mendapatkan bantuan AI saat melihat wawasan teratas. Copilot menyediakan informasi dan wawasan yang terkait dengan serangkaian wawasan performa tertentu. Dengan Copilot, Anda juga dapat mengajukan pertanyaan tentang objek menggunakan memori terbanyak, yang dapat membantu Anda menghasilkan kode yang lebih efisien atau hemat biaya.

Cuplikan layar tombol TanyaKan Salinan. muncul bahkan jika tidak ada wawasan performa tertentu yang diidentifikasi. Pilih Minta Copilot untuk mempelajari dari Copilot dan mulai mengajukan pertanyaan.

Alokasi

Tampilan Alokasi menunjukkan lokasi objek yang mengalokasikan memori dan berapa banyak memori yang dialokasikan objek tersebut.

Cuplikan layar tampilan Alokasi diperluas.

Informasi berikut muncul dalam tampilan Alokasi:

  • Kolom Jenis adalah daftar kelas dan struktur yang menggunakan memori. Klik dua kali tipe untuk melihat backtrace-nya dalam bentuk pohon panggilan terbalik. Dalam tampilan Alokasi saja, Anda dapat melihat item dalam kategori yang dipilih yang menggunakan memori.

  • Kolom Alokasi memperlihatkan jumlah objek yang menggunakan memori dalam jenis atau fungsi alokasi tertentu. Kolom ini hanya muncul di tampilan Alokasi, Pohon Panggilan, dan Fungsi.

  • Byte dan Ukuran Rata-Rata (Byte) tidak muncul secara default. Untuk memperlihatkannya, klik kanan kolom Tipe atau Alokasi, lalu pilih opsi Byte dan Ukuran Rata-Rata (Byte) untuk menambahkannya ke bagan.

    Dua kolom tersebut mirip dengan Total (Alokasi) dan Mandiri (Alokasi), kecuali memperlihatkan jumlah memori yang digunakan bukan jumlah objek yang menggunakan memori. Kolom ini hanya muncul dalam tampilan Alokasi.

  • Kolom Nama modul menunjukkan modul yang berisi fungsi atau proses yang sedang dipanggil.

Semua kolom ini dapat diurutkan. Untuk kolom Tipe dan Nama Modul , Anda dapat mengurutkan item menurut abjad dalam urutan naik atau menurun. Untuk Alokasi , Bytes, dan Ukuran Rata-Rata (Bytes), Anda dapat mengurutkan item berdasarkan peningkatan atau penurunan nilai numerik.

Simbol

Simbol berikut muncul di Alokasi, pohon panggilan, dan fungsi tab:

  • Simbol jenis nilai - Jenis nilai seperti bilangan bulat

  • Simbol koleksi jenis nilai - Koleksi jenis nilai seperti array bilangan bulat

  • Simbol jenis referensi - Jenis referensi seperti string

  • Simbol koleksi jenis referensi - Koleksi jenis referensi seperti array string

Pohon Panggilan

Tampilan Pohon Panggilan menunjukkan jalur eksekusi fungsi yang berisi objek yang mengalokasikan banyak memori.

Cuplikan layar tampilan Pohon Panggilan.

Informasi berikut ini muncul di tampilan Pohon Panggilan :

  • Kolom Nama Fungsi memperlihatkan proses atau nama fungsi yang berisi objek yang mengalokasikan memori. Tampilan didasarkan pada tingkat simpul yang Anda periksa.
  • Kolom Total (Alokasi) dan Ukuran Total (Byte) menunjukkan jumlah objek yang dialokasikan dan jumlah memori yang digunakan oleh fungsi dan semua fungsi lain yang dipanggilnya. Kolom Ukuran Total (Byte) disembunyikan secara default.
  • Kolom (Alokasi) Diri Sendiri dan Self-Size (Bita) menunjukkan jumlah objek yang dialokasikan dan jumlah memori yang digunakan oleh satu fungsi yang dipilih atau jenis alokasi.
  • Kolom Ukuran Rata-Rata (Byte) memperlihatkan informasi yang sama seperti yang ada di tampilan Alokasi. Kolom ini disembunyikan secara default.
  • Kolom Nama modul menunjukkan modul yang berisi fungsi atau proses yang sedang dipanggil.

Opsi tambahan yang muncul dalam tampilan Pohon Panggilan meliputi:

  • Tombol Perluas Jalur Utama menyoroti jalur eksekusi fungsi yang berisi banyak objek yang mengalokasikan memori. Algoritma dimulai pada simpul yang Anda pilih dan menyoroti jalur alokasi terbanyak, memandu Anda dalam penyelidikan Anda.
  • Tombol Tampilkan Jalur Panas memperlihatkan atau menyembunyikan simbol api yang menunjukkan simpul mana yang merupakan bagian dari jalur panas.

Cuplikan layar jalur panas diperluas.

Functions

Tampilan Functions menunjukkan proses, modul, dan fungsi yang mengalokasikan memori.

Cuplikan layar tampilan Fungsi. tampilan Fungsi

Informasi yang muncul dalam tampilan Functions meliputi:

  • Kolom Nama memperlihatkan proses sebagai simpul pada tingkat tertinggi. Di bawah proses adalah modul, dan di bawahnya modul adalah fungsi.

  • Kolom berikut, yang memperlihatkan informasi yang sama seperti yang mereka lakukan di Alokasi dan pohon Panggilan tampilan:

    • Total (Alokasi)
    • Mandiri (Alokasi)
    • Ukuran Total (Byte)
    • Ukuran Mandiri (Byte)
    • Ukuran Rata-Rata (Byte)

Koleksi

Tampilan Koleksi menunjukkan berapa banyak objek yang dikumpulkan atau disimpan selama pengumpulan sampah.

Cuplikan layar Tampilan Koleksi.

Informasi berikut ini muncul dalam tampilan Koleksi .

  • Kolom GC menunjukkan ID pengumpulan sampah ini dalam siklus hidup eksekusi program.
  • Kolom Generasi memperlihatkan Generasi dari pengumpulan sampah.
  • Kolom Jenis GC menunjukkan jenis pengumpulan sampah ini.
  • Kolom GC Reason menunjukkan alasan peristiwa pengumpulan sampah ini.
  • Kolom Durasi Jeda menunjukkan waktu diblokirnya eksekusi karena pengumpul sampah membutuhkan penggunaan tumpukan secara eksklusif. Untuk pengumpulan sampah latar belakang, nilai ini kecil.
  • Kolom Ukuran LOH menunjukkan ukuran Tumpukan Objek Besar setelah pengumpul sampah dijalankan.
  • Kolom Ukuran POH menunjukkan ukuran Tumpukan Objek yang Disematkan setelah garbage collector dijalankan.
  • Kolom Finalizable Surv (MB) menunjukkan jumlah MB dari objek yang memiliki finalizer (destruktor) yang bertahan setelah proses pengumpulan sampah.
  • Kolom Objek Disematkan menunjukkan jumlah objek yang disematkan yang dipromosikan oleh pengumpulan sampah ini.
  • Kolom Dikumpulkan menunjukkan jumlah objek yang terkumpul oleh pengumpul sampah.
  • Kolom Survived menunjukkan jumlah objek yang tetap ada setelah proses pengumpulan sampah dilakukan.

Saat Anda memilih baris, tampilan ini juga memperlihatkan diagram pai untuk memvisualisasikan objek menurut jenis yang berhasil dikumpulkan dan bertahan.

Cuplikan layar bagan pai dalam Tampilan Koleksi.

Alat pemfilteran

Alokasi , Call Tree, dan Functions semuanya berisi opsi Tampilkan Kode Saya dan Tampilkan Kode Asli serta kotak filter.

  • Tampilkan Just My Code menciutkan sistem, kerangka kerja, dan kode nonpengguna lainnya ke dalam bingkai [External Code] sehingga Anda dapat fokus hanya pada kode Anda. Untuk informasi selengkapnya, lihat Debug kode pengguna dengan Just My Code.
  • Tampilkan Kode Asli menunjukkan kode asli dalam target analisis dan dapat menyertakan kode nonpengguna.
  • Dengan kotak filter, Anda bisa memfilter kolom Nama atau Nama fungsi berdasarkan nilai yang Anda berikan. Masukkan nilai string dalam kotak. Tabel kemudian hanya memperlihatkan jenis yang berisi string tersebut.