Menganalisis penggunaan memori dengan menggunakan alat Object Allocation .NET
Anda dapat melihat berapa banyak memori yang digunakan aplikasi Anda dan jalur kode apa yang mengalokasikan memori terbanyak dengan menggunakan alat Object Allocation .NET.
Setelah menjalankan alat ini, Anda dapat melihat jalur eksekusi fungsi tempat objek dialokasikan. Anda kemudian dapat melacak kembali ke akar pohon panggilan yang mengambil memori terbanyak.
Untuk tutorial yang menunjukkan cara meningkatkan performa menggunakan alat Alokasi Objek .NET, lihat Studi kasus: Panduan pemula untuk mengoptimalkan kode.
Siapkan
Pilih Alt+F2 untuk membuka Performance Profiler di Visual Studio.
Pilih kotak centang Pelacakan Alokasi Objek .NET.
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 Rekam dalam tampilan sesi diagnostik.
Setelah alat mulai berjalan, lihat skenario yang ingin Anda profilkan di aplikasi Anda. Lalu pilih Hentikan pengumpulan atau tutup aplikasi Anda untuk melihat data Anda.
Pilih tab Alokasi . Data alokasi memori yang mirip dengan yang berikut ini muncul.
Anda sekarang dapat menganalisis alokasi memori objek.
Selama pengumpulan, alat pelacakan dapat memperlambat aplikasi yang dibuat profilnya. Jika performa alat pelacakan atau aplikasi lambat, dan jika Anda tidak perlu melacak setiap objek, Anda dapat menyesuaikan laju sampel. Untuk melakukannya, pilih simbol roda gigi di samping alat pelacakan di halaman ringkasan pembuat profil.
Sesuaikan laju sampel dengan laju yang Anda inginkan. Perubahan ini membantu mempercepat performa aplikasi Anda selama pengumpulan dan analisis.
Untuk informasi selengkapnya tentang cara membuat alat lebih efisien, lihat Mengoptimalkan pengaturan Pembuat profil.
Memahami data Anda
Dalam tampilan grafis berikut, grafik atas menunjukkan jumlah objek langsung di aplikasi Anda. Grafik Objek delta di bagian bawah menunjukkan perubahan persentase objek aplikasi. Bilah merah menunjukkan kapan pengumpulan sampah terjadi.
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.
Anda juga dapat memperbesar atau memperkecil grafik.
Alokasi
Tampilan Alokasi menampilkan lokasi objek yang mengalokasikan memori dan berapa banyak memori yang dialokasikan objek tersebut.
Informasi berikut muncul dalam tampilan Alokasi :
Kolom Jenis adalah daftar kelas dan struktur yang mengambil memori. Klik dua kali pada jenis untuk melihat backtrace-nya sebagai pohon panggilan terbalik. Hanya di tampilan Alokasi, Anda dapat melihat item dalam kategori yang dipilih yang mengambil memori.
Kolom Alokasi menampilkan jumlah objek yang mengambil memori dalam jenis atau fungsi alokasi tertentu. Kolom ini hanya muncul di tampilan Alokasi, Pohon Panggilan, dan Fungsi.
Kolom Byte dan Ukuran Rata-Rata (Byte) tidak muncul secara default. Untuk menampilkannya, klik kanan kolom Jenis atau Alokasi, dan kemudian pilih opsi Byte dan Ukuran Rata-Rata (Byte) untuk menambahkannya ke bagan.
Dua kolom mirip dengan (Alokasi) Total dan (Alokasi) Mandiri, kecuali bahwa kolom tersebut menampilkan jumlah memori yang diambil alih-alih jumlah objek yang mengambil memori. Kolom ini hanya muncul di tampilan Alokasi.
Kolom Nama modul menampilkan modul yang berisi fungsi atau proses yang memanggil.
Semua kolom ini dapat diurutkan. Untuk kolom Jenis dan Nama Modul, Anda dapat mengurutkan item menurut abjad dalam urutan naik atau turun. Untuk Alokasi, Byte, dan Ukuran Rata-Rata (Byte), Anda dapat mengurutkan item dengan meningkatkan atau menurunkan nilai numerik.
Simbol
Simbol berikut muncul di tab Alokasi, Pohon Panggilan, dan Fungsi:
- Jenis nilai seperti bilangan bulat
- Koleksi jenis nilai seperti array bilangan bulat
- Jenis referensi seperti string
- Koleksi jenis referensi seperti array string
Pohon Panggilan
Tampilan Pohon Panggilan menampilkan jalur eksekusi fungsi yang berisi objek yang mengalokasikan banyak memori.
Informasi berikut ini muncul dalam tampilan Pohon Panggilan:
- Kolom Nama Fungsi menampilkan proses atau nama fungsi yang berisi objek yang mengalokasikan memori. Tampilan didasarkan pada tingkat simpul yang Anda periksa.
- Kolom (Alokasi) Total dan Ukuran Total (Byte) menampilkan 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) Mandiri dan Ukuran Mandiri (Byte) menampilkan jumlah objek yang dialokasikan dan jumlah memori yang digunakan oleh satu fungsi yang dipilih atau jenis alokasi.
- Kolom Ukuran Rata-Rata (Byte) menampilkan informasi yang sama seperti dalam tampilan Alokasi. Kolom ini disembunyikan secara default.
- Kolom Nama modul menampilkan modul yang berisi fungsi atau proses yang memanggil.
Opsi tambahan yang muncul dalam tampilan Pohon Panggilan meliputi:
- Tombol Luaskan Jalur Panas 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 menampilkan atau menyembunyikan simbol api yang menunjukkan simpul mana yang merupakan bagian dari jalur panas.
Fungsi
Tampilan Fungsi menampilkan proses, modul, dan fungsi yang mengalokasikan memori.
Informasi yang muncul dalam tampilan Fungsi meliputi:
Kolom Nama menampilkan proses sebagai simpul tingkat tertinggi. Di bawah proses adalah modul, dan di bawah modul adalah fungsi.
Kolom berikut, yang memperlihatkan informasi yang sama seperti yang mereka lakukan dalam tampilan pohon Alokasi dan Panggilan:
- (Alokasi) Total
- (Alokasi) Mandiri
- Ukuran Total (Byte)
- Ukuran Mandiri (Byte)
- Ukuran Rata-Rata (Byte)
Koleksi
Tampilan Koleksi menampilkan berapa banyak objek yang dikumpulkan atau dipertahankan selama pengumpulan sampah.
Informasi berikut muncul dalam tampilan Koleksi .
- Kolom GC menunjukkan ID pengumpulan sampah ini dalam siklus hidup yang dapat dieksekusi.
- Kolom Pembuatan menunjukkan Pembuatan pengumpulan sampah.
- Kolom Jenis GC memperlihatkan jenis pengumpulan sampah ini.
- Kolom Alasan GC menunjukkan alasan peristiwa pengumpulan sampah ini.
- Kolom Durasi Jeda menunjukkan waktu eksekusi diblokir 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 pengumpul sampah dijalankan.
- Kolom Finalizable Surv (MB) menunjukkan jumlah MB objek yang memiliki finalizer (destructor) yang selamat dari pengumpulan sampah.
- Kolom Objek Yang Disematkan memperlihatkan jumlah objek yang disematkan yang dipromosikan oleh kumpulan sampah ini.
- Kolom Yang Dikumpulkan menampilkan jumlah objek yang dikumpulkan oleh pengumpul sampah.
- Kolom Dipertahankan menunjukkan jumlah objek yang dipertahanbkan setelah pengumpul sampah dijalankan.
Saat Anda memilih baris, tampilan ini juga memperlihatkan bagan pai untuk memvisualisasikan objek yang dikumpulkan dan bertahan menurut jenis.
Alat pemfilteran
Tampilan Alokasi, Pohon Panggilan, dan Fungsi semuanya berisi opsi Tampilkan Hanya Kode Saya dan Tampilkan Kode Native dan kotak filter.
- Tampilkan Hanya Kode Saya menciutkan sistem, kerangka kerja, dan kode nonpengguna lainnya ke dalam bingkai [Kode Eksternal] agar Anda hanya dapat berfokus pada kode Anda. Untuk informasi selengkapnya, lihat Men-debug kode pengguna dengan Hanya Kode Saya.
- Tampilkan Kode Native menampilkan kode native dalam target analisis dan dapat menyertakan kode nonpengguna.
- Dengan kotak filter, Anda dapat memfilter kolom Nama atau Nama fungsi berdasarkan nilai yang Anda berikan. Masukkan nilai string dalam kotak. Tabel kemudian hanya menampilkan jenis yang berisi string tersebut.