Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Alat Penggunaan Memori memantau penggunaan memori aplikasi Anda. Anda dapat menggunakan alat ini untuk mempelajari efek memori real-time dari skenario yang Anda kembangkan secara aktif di Visual Studio. Anda dapat mengambil rekam jepret terperinci dari status memori aplikasi, dan membandingkan rekam jepret untuk menemukan akar penyebab masalah memori. Alat Penggunaan Memori didukung pada aplikasi .NET, ASP.NET, C++, atau mode campuran (.NET dan asli).
Alat Penggunaan Memori tersebut dapat dijalankan pada build rilis atau debug. Dalam artikel ini, kami menunjukkan cara menggunakan alat Pemantau Penggunaan Memori di Visual Studio Performance Profiler, yang direkomendasikan untuk build rilis. Untuk informasi tentang memilih alat analisis memori terbaik untuk kebutuhan Anda, lihat Memilih alat analisis memori.
Untuk pengalaman terbaik dengan dokumentasi ini, pilih bahasa pengembangan atau runtime pilihan Anda dari daftar di bagian atas artikel.
Sesi diagnostik Penggunaan Memori
Untuk memulai sesi diagnostik Penggunaan Memori:
Buka proyek di Visual Studio.
Alat Penggunaan Memori mendukung aplikasi .NET, ASP.NET, C++, atau mode campuran (.NET dan asli).
Di menu Debug, atur konfigurasi solusi ke Rilis dan pilih target penyebaran.
Target penyebaran biasanya cocok dengan nama project, yang menunjukkan penyebaran lokal.
Pada bilah menu, pilih DebugPerformance Profiler.
Pada tab Fleksibel , pilih Penggunaan Memori, lalu pilih Mulai.
Cuplikan layar yang memperlihatkan opsi Penggunaan Memori dan tombol Mulai.
- Di bawah Alat yang Tersedia, pilih Penggunaan Memori, lalu pilih Mulai. Memulai sesi diagnostik Penggunaan Memori.
Nota
Untuk beberapa jenis project, seperti CMake, Anda harus mengatur target startup ke Executable. Untuk informasi selengkapnya, lihat Alat apa yang didukung untuk project saya?.
Memantau penggunaan memori
Saat Anda memulai sesi diagnostik, aplikasi Anda dimulai, dan jendela Alat Diagnostik menampilkan grafik garis waktu penggunaan memori aplikasi Anda.
Grafik garis waktu menunjukkan fluktuasi memori saat aplikasi berjalan. Lonjakan dalam grafik biasanya menunjukkan bahwa beberapa kode mengumpulkan atau membuat data, lalu membuangnya ketika pemrosesan selesai. Lonjakan besar menunjukkan area yang dapat Anda optimalkan. Perhatian utama adalah meningkatnya konsumsi memori yang tidak dikembalikan. Ini mungkin menunjukkan penggunaan memori yang tidak efisien atau bahkan kebocoran memori.
Mengambil rekam jepret status memori aplikasi
Aplikasi menggunakan sejumlah besar objek, dan Anda mungkin ingin memkonsentrasikan analisis Anda pada satu skenario. Atau, Anda mungkin menemukan masalah memori yang perlu diselidiki. Anda dapat mengambil rekam jepret selama sesi diagnostik untuk menangkap penggunaan memori pada saat-saat tertentu. Ada baiknya untuk mendapatkan rekam jepret garis besar aplikasi sebelum masalah memori muncul. Anda dapat mengambil rekam jepret lain setelah terjadinya masalah pertama, dan rekam jepret tambahan jika Anda dapat mengulangi skenario.
Untuk mengumpulkan rekam jepret, pilih Ambil rekam jepret saat Anda ingin mengambil data memori.
Cuplikan layar mengambil rekam jepret.
Menutup sesi diagnostik
Untuk menghentikan sesi pemantauan tanpa membuat laporan, cukup tutup jendela diagnostik. Untuk membuat laporan setelah Anda selesai mengumpulkan atau mengambil rekam jepret, pilih Hentikan Koleksi.
Cuplikan layar penghentian pengumpulan.
Cuplikan layar penghentian pengumpulan.
Jika Anda mengalami masalah saat mengumpulkan atau menampilkan data, lihat Memecahkan masalah kesalahan pembuatan profil dan memperbaiki masalah.
Laporan Penggunaan Memori
Setelah Anda menghentikan pengumpulan data, alat Penggunaan Memori menghentikan aplikasi dan menampilkan halaman ringkasan Penggunaan Memori.
Rekam jepret Penggunaan Memori
Angka di panel Snapshot memperlihatkan objek dan byte dalam memori saat setiap cuplikan diambil, dan perbedaan antara cuplikan dan yang sebelumnya.
Angka-angka tersebut adalah tautan yang membuka tampilan laporan Penggunaan Memori terperinci di jendela Visual Studio baru. Laporan detail cuplikan menunjukkan jenis dan kejadian dalam satu cuplikan. Laporan perbedaan rekam jepret (diff) membandingkan jenis dan instans dalam dua rekam jepret.
Cuplikan layar tautan tampilan Rekam Jeprettautan tampilan Rekam Jepret
Untuk C++, kolom Objects (Diff) dinamai Allocations (Diff).
| Gambar | Deskripsi |
|---|---|
| Langkah 1Panduan Proses-1 | Jumlah total objek dalam memori saat rekam jepret diambil. Pilih tautan ini untuk menampilkan laporan detail rekam jepret yang diurutkan menurut jumlah instans jenis. |
| Langkah 2Panduan Proses-2 | Perbedaan antara jumlah total objek memori dalam rekam jepret ini dan rekam jepret sebelumnya. Pilih tautan ini untuk menampilkan laporan perbedaan snapshot yang diatur menurut perbedaan jumlah total jenis instance. |
| Langkah 3Panduan Proses-3 | Jumlah total byte dalam memori saat rekam jepret diambil. Pilih tautan ini untuk menampilkan laporan detail rekam jepret yang diurutkan menurut ukuran total instans jenis. |
| Langkah 4Panduan Proses-4 | Perbedaan antara ukuran total objek memori dalam rekam jepret ini dan rekam jepret sebelumnya. Angka positif berarti ukuran memori rekam jepret ini lebih besar dari yang sebelumnya, dan angka negatif berarti ukurannya lebih kecil. Baseline berarti rekam jepret adalah yang pertama dalam sesi diagnostik. Tidak Ada Perbedaan berarti perbedaannya adalah nol. Pilih tautan ini untuk menampilkan laporan perbedaan cuplikan yang diurutkan berdasarkan perbedaan ukuran total dari instans jenis. |
Laporan tipe terkendali
Pilih tautan saat ini dari sel Objek (Diff) dalam tabel ringkasan Penggunaan Memori.
Cuplikan layar laporan jenis terkelola.Laporan jenis terkelola
Nota
Untuk kode .NET, ikon View Details (
) hanya tersedia saat menggunakan alat Penggunaan Memori terintegrasi debugger atau saat Anda membuka rekam jepret heap dan memilih Debug Memori Terkelola.
Panel atas memperlihatkan jumlah dan ukuran tipe dalam cuplikan, termasuk ukuran semua objek yang dirujuk oleh tipe tersebut (Ukuran Inklusif).
Pohon Jalur ke Akar di panel bawah menampilkan objek yang mereferensi tipe yang dipilih di panel atas. Pengumpul sampah .NET membersihkan memori untuk sebuah objek hanya ketika tipe terakhir yang mereferensinya telah dirilis. Untuk informasi selengkapnya tentang cara menggunakan pohon Paths to Root, lihat Analisis jalur utama ke root.
Cuplikan layar laporan jenis terkelola.Laporan jenis terkelola
Nota
Untuk kode .NET, ikon View Instances (
) hanya tersedia ketika menggunakan alat Penggunaan Memori yang terintegrasi dengan debugger atau saat Anda membuka heap snapshot dan memilih Debug Memori Terkelola.
Panel atas memperlihatkan jumlah dan ukuran tipe dalam cuplikan, termasuk ukuran semua objek yang dirujuk oleh tipe tersebut (Ukuran Inklusif).
Pohon Jalur ke Akar di panel bawah menampilkan objek yang mereferensi tipe yang dipilih di panel atas. Pengumpul sampah .NET membersihkan memori untuk sebuah objek hanya ketika tipe terakhir yang mereferensinya telah dirilis. Untuk informasi selengkapnya tentang cara menggunakan pohon Paths to Root, lihat Analisis jalur utama ke root.
Pohon Tipe Referensi menampilkan referensi yang dimiliki oleh tipe yang dipilih di panel atas.
Cuplikan layar laporan Objek Yang Dirujuk.
Pohon Tipe Referensi menampilkan referensi yang dimiliki oleh tipe yang dipilih di panel atas.
Cuplikan layar laporan Objek Yang Dirujuk.
Filter hirarki laporan
Banyak jenis elemen dalam aplikasi tidak diperlukan bagi pengembang aplikasi untuk menangani masalah memori. Filter laporan rekam jepret dapat menyembunyikan sebagian besar jenis ini di Memori Terkelola dan di pohon Jalur ke Root.
opsi pengurutan dan penyaringan pengurutan dan penyaringan penggunaan memori
Untuk memfilter pohon menurut nama jenis, masukkan nama dalam kotak Filter. Filter tidak memperhatikan besar kecilnya huruf, dan mengenali teks yang ditentukan di bagian mana pun dari nama jenis.
Pilih Tampilkan Hanya Kode Saya di menu dropdown Filter untuk menyembunyikan sebagian besar instans yang dihasilkan oleh kode eksternal. Jenis eksternal milik sistem operasi atau komponen kerangka kerja, atau dihasilkan oleh pengkompilasi.
Pilih Ciutkan Objek Kecil di menu dropdown Filter untuk menyembunyikan jenis Ukuran (Byte) kurang dari 0,5 persen dari total memori.
Laporan jenis bawaan
Pilih tautan saat ini dari sel Alokasi (Diff) atau Ukuran Timbunan (Diff) dalam tabel ringkasan Penggunaan Memori dari jendela Alat Diagnostik.
Cuplikan layar Tampilan Tipe Asli.
Cuplikan layar Tampilan Tipe Asli.
Tampilan Jenis menampilkan jumlah dan ukuran jenis dalam rekam jepret.
Pilih ikon Tampilkan Detail di samping jenis yang dipilih untuk menampilkan informasi tentang objek jenis yang dipilih dalam rekam jepret.
Tampilan Instans menampilkan setiap instans dari tipe yang dipilih. Memilih instans menampilkan tumpukan panggilan yang digunakan untuk membuat instans di panel Allocation Call Stack. (Informasi ini hanya tersedia saat debugging.)
Cuplikan layar tampilan Instances dan panel Tumpukan Panggilan Alokasi.
Pilih ikon Tampilkan Instans di samping jenis yang dipilih untuk menampilkan informasi tentang objek jenis yang dipilih dalam rekam jepret.
Tampilan Instans menampilkan setiap instans dari tipe yang dipilih. Memilih instans menampilkan tumpukan panggilan yang digunakan untuk membuat instans di panel Allocation Call Stack. (Informasi ini hanya tersedia saat debugging.)
Cuplikan layar tampilan Instances dan panel Tumpukan Panggilan Alokasi.
Pilih Tumpukan untuk melihat tumpukan alokasi untuk jenis yang dipilih.
Cuplikan layar tampilan Tumpukan.
Pilih Tumpukan untuk melihat tumpukan alokasi untuk jenis yang dipilih.
Cuplikan layar tampilan Tumpukan.
Wawasan Penggunaan Memori
Untuk memori terkelola, alat Analisis Memori juga memberikan beberapa wawasan otomatis bawaan yang kuat. Pilih tab Wawasan di laporan jenis yang dikelola dan menampilkan wawasan otomatis yang berlaku seperti String duplikat, Array sparse, dan Kebocoran penangan acara.
Tampilan wawasan di alat Penggunaan Memori.Wawasan Penggunaan Memori
Tampilan wawasan di alat Penggunaan Memori.Wawasan Penggunaan Memori
Bagian String Duplikat memperlihatkan daftar string yang dialokasikan beberapa kali pada heap. Selain itu, bagian ini menunjukkan total memori yang terbuang, yaitu , (jumlah instans - 1) kali ukuran string.
Bagian Sparse Arrays menunjukkan array yang sebagian besar diisi dengan elemen nol, yang dapat tidak efisien dalam hal performa dan penggunaan memori. Alat analisis memori akan secara otomatis mendeteksi array ini dan menunjukkan kepada Anda berapa banyak memori yang terbuang karena nilai nol ini.
Bagian Event Handler Leaks, tersedia di Visual Studio 2022 versi 17.9 Pratinjau 1, menunjukkan potensi kebocoran memori yang dapat terjadi ketika satu objek berlangganan ke acara dari objek lain. Jika publisher dari acara tetap ada lebih lama dari subscriber, subscriber tetap hidup, bahkan jika tidak ada referensi lain untuknya. Ini dapat menyebabkan kebocoran memori, di mana memori yang tidak digunakan tidak dibebaskan dengan benar, menyebabkan aplikasi menggunakan semakin banyak memori dari waktu ke waktu.
Jenis tertentu diketahui memiliki bidang yang dapat dibaca untuk menentukan ukuran memori asli yang mereka pegang. Tab Insights menunjukkan simpul memori tiruan dalam grafik objek, yang dipertahankan oleh objek induknya sehingga antarmuka pengguna akan mengenalinya dan menampilkan ukurannya serta grafik referensinya.
Cuplikan layar tampilan wawasan asli di alat Penggunaan Memori.tampilan wawasan asli di alat Penggunaan Memori
Laporan Perubahan (Diff)
Pilih tautan ubah di sel panel rekam jepret di halaman gambaran umum Penggunaan Memori.
Cuplikan layar Pilih tautan ganti dalam sel.
Pilih rekam jepret di daftar Bandingkan Dengan laporan terkelola atau asli.
Cuplikan layar daftar perbandingan.
Cuplikan layar untuk memilih rekaman jepretan dari daftar 'Bandingkan dengan'.
Laporan perubahan menambahkan kolom (ditandai dengan (Diff) ) ke laporan dasar yang memperlihatkan perbedaan antara nilai rekam jepret dasar dan rekam jepret perbandingan. Berikut adalah bagaimana tampilan laporan perbedaan Tampilan Jenis Asli:
Cuplikan Layar Tampilan Perbedaan Jenis Asli.Tampilan Perbedaan Jenis Asli
Cuplikan Layar Tampilan Perbedaan Jenis Asli.Tampilan Perbedaan Jenis Asli
Panel atas memperlihatkan jumlah dan ukuran tipe dalam cuplikan, termasuk ukuran semua objek yang dirujuk oleh tipe tersebut (Ukuran Inklusif).
Konten terkait
- Profiling dalam Visual Studio
- Pertama-tama lihat alat pembuatan profil
- Profile aplikasi Anda dengan GitHub Copilot Profiler Agent
- Menganalisis jalur panas ke root
- Pilih alat analisis memori
- Alat Alokasi Objek .NET
- Memecahkan masalah kesalahan pembuatan profil dan memperbaiki masalah
- Diagnosing masalah memori dengan alat Penggunaan Memori baru di Visual Studio