Penghitung performa dalam .NET Framework
Catatan
Artikel ini khusus untuk .NET Framework. Ini tidak berlaku untuk implementasi .NET yang lebih baru, termasuk .NET 6 dan versi yang lebih baru.
Artikel ini menyediakan daftar penghitung performa yang dapat Anda temukan di Windows Performance Monitor.
Penghitung kinerja pengecualian
Kategori Pengecualian CLR .NET mencakup penghitung yang memberikan informasi tentang pengecualian yang dilemparkan oleh aplikasi. Tabel berikut menjelaskan penghitung performa ini.
Penghitung kinerja | Deskripsi |
---|---|
# dari Exceps Yang Ditampilkan | Menampilkan jumlah total pengecualian yang ditampilkan sejak aplikasi dimulai. Ini termasuk pengecualian .NET dan pengecualian tidak terkelola yang dikonversi menjadi pengecualian .NET. Misalnya, HRESULT yang dikembalikan dari kode tak terkelola dikonversi menjadi pengecualian dalam kode terkendali. Hal ini termasuk pengecualian yang ditangani dan tidak tertangani. Pengecualian yang ditumbuhi kembali dihitung lagi. |
# dari Exceps Ditampilkan/Detik | Menampilkan jumlah pengecualian yang ditampilkan per detik. Ini termasuk pengecualian .NET dan pengecualian tidak terkelola yang dikonversi menjadi pengecualian .NET. Misalnya, HRESULT yang dikembalikan dari kode tak terkelola dikonversi menjadi pengecualian dalam kode terkendali. Hal ini termasuk pengecualian yang ditangani dan tidak tertangani. Ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. Penghitung ini adalah indikator potensi masalah performa jika jumlah pengecualian besar (>100 detik) ditampilkan. |
# dari Filter/Detik | Menampilkan jumlah filter pengecualian .NET yang dijalankan per detik. Filter pengecualian mengevaluasi terlepas dari apakah pengecualian ditangani. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
# dari Akhir/Detik | Menampilkan jumlah blok akhirnya yang dijalankan per detik. Blok akhirnya dijamin akan dijalankan terlepas dari bagaimana blok coba keluar. Hanya blok akhirnya yang dijalankan untuk pengecualian yang dihitung; akhirnya blok pada jalur kode normal tidak dihitung oleh penghitung ini. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Lempar ke Kedalaman Tangkapan / Detik | Menampilkan jumlah bingkai tumpukan yang dilalui, dari bingkai yang menampilkan pengecualian ke bingkai yang menangani pengecualian, per detik. Penghitung ini direset ke nol ketika penanganan pengecualian dimasukkan, sehingga pengecualian berlapis menunjukkan kedalaman tumpukan handler-to-handler. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Penghitung performa interop
Kategori Interop CLR .NET mencakup penghitung yang menyediakan informasi tentang interaksi aplikasi dengan komponen COM, layanan COM+, dan pustaka jenis eksternal. Tabel berikut menjelaskan penghitung performa ini.
Penghitung kinerja | Deskripsi |
---|---|
# dari CCW | Menampilkan jumlah pembungkus yang dapat dipanggil COM (CCW) saat ini. CCW adalah proksi untuk objek terkelola yang direferensikan dari klien COM yang tidak dikelola. Penghitung ini menunjukkan jumlah objek terkelola yang direferensikan oleh kode COM yang tidak dikelola. |
# dari penyusunan | Menampilkan jumlah total kali argumen dan nilai yang dikembalikan telah disusun dari kode terkendali ke kode tak terkelola, dan sebaliknya, sejak aplikasi dimulai. Penghitung ini tidak bertahap jika ganja sebaris. (Stub bertanggung jawab untuk penyusunan argumen dan mengembalikan nilai). Penyusunan stub biasanya sebaris jika overhead penyusunan kecil. |
# dari Stubs | Menampilkan jumlah stub saat ini yang dibuat oleh runtime bahasa umum. Stub bertanggung jawab untuk penyusunan argumen dan mengembalikan nilai dari kode terkendali ke kode tak terkelola, dan sebaliknya, selama panggilan interop COM atau platform memanggil panggilan. |
# ekspor TLB/dtk | Disiapkan untuk penggunaan masa mendatang. |
# impor TLB/dtk | Disiapkan untuk penggunaan masa mendatang. |
Penghitung performa JIT
Kategori .NET CLR JIT mencakup penghitung yang memberikan informasi tentang kode yang telah dikompilasi JIT. Tabel berikut menjelaskan penghitung performa ini.
Penghitung kinerja | Deskripsi |
---|---|
# dari Bahasa Perantara Byte JITted | Menampilkan jumlah total byte bahasa perantara umum (CIL) yang dikompilasi oleh kompilator just-in-time (JIT) sejak aplikasi dimulai. Penghitung ini setara dengan Total # penghitung Bahasa Perantara Byte Jitted. |
# metode JITted | Menampilkan jumlah total metode yang dikompilasi JIT sejak aplikasi dimulai. Penghitung ini tidak termasuk metode pra-JIT yang dikompilasi. |
% Waktu di Jit | Menampilkan persentase waktu yang berlalu yang dihabiskan dalam kompilasi JIT sejak fase kompilasi JIT terakhir. Penghitung ini diperbarui di akhir setiap fase kompilasi JIT. Fase kompilasi JIT terjadi ketika metode dan dependensinya dikompilasi. |
Bahasa Perantara Byte Jitted/detik | Menampilkan jumlah byte CIL yang dikompilasi JIT per detik. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Kegagalan Jit Standar | Menampilkan jumlah puncak metode yang gagal dikompilasi kompilator JIT sejak aplikasi dimulai. Kegagalan ini dapat terjadi jika CIL tidak dapat diverifikasi atau jika ada kesalahan internal dalam pengkompilasi JIT. |
Total # dari Bahasa Perantara Byte Jitted | Menampilkan total byte CIL yang dikompilasi JIT sejak aplikasi dimulai. Penghitung ini setara dengan penghitung # Bahasa Perantara Byte Jitted. |
Memuat penghitung performa
Kategori Pemuatan .NET CLR mencakup penghitung yang menyediakan informasi tentang rakitan, kelas, dan domain aplikasi yang dimuat. Tabel berikut menjelaskan penghitung performa ini.
Penghitung kinerja | Deskripsi |
---|---|
% Pemuatan Waktu | Disiapkan untuk penggunaan masa mendatang. |
Panjang Pencarian Rakitan | Disiapkan untuk penggunaan masa mendatang. |
Byte di Loader Heap | Menampilkan ukuran saat ini, dalam byte, dari memori yang diterapkan oleh pemuat kelas di semua domain aplikasi. Memori yang diterapkan adalah ruang fisik yang dicadangkan dalam file halaman disk. |
Appdomain saat ini | Menampilkan jumlah domain aplikasi saat ini yang dimuat dalam aplikasi ini. |
Rakitan Terkini | Menampilkan jumlah rakitan saat ini yang dimuat di semua domain aplikasi dalam aplikasi yang sedang berjalan. Jika rakitan dimuat sebagai domain netral dari beberapa domain aplikasi, penghitung ini hanya dinaikkan sekali. |
Kelas Saat Ini Dimuat | Menampilkan jumlah kelas saat ini yang dimuat di semua rakitan. |
Tingkat appdomain | Menampilkan jumlah domain aplikasi yang dimuat per detik. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Tingkat appdomain yang dibongkar | Menampilkan jumlah domain aplikasi yang dibongkar per detik. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Tingkat Rakitan | Menampilkan jumlah rakitan yang dimuat per detik di semua domain aplikasi. Jika rakitan dimuat sebagai domain netral dari beberapa domain aplikasi, penghitung ini hanya dinaikkan sekali. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Tingkat Kelas yang Dimuat | Menampilkan jumlah kelas yang dimuat per detik di semua rakitan. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Tingkat Kegagalan Beban | Menampilkan jumlah kelas yang gagal dimuat per detik. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. Kegagalan pemuatan dapat terjadi karena berbagai alasan, seperti keamanan yang tidak memadai atau format yang tidak valid. Untuk detailnya, lihat Bantuan layanan pembuatan profil. |
Total # Kegagalan Beban | Menampilkan jumlah puncak kelas yang gagal dimuat sejak aplikasi dimulai. Kegagalan pemuatan dapat terjadi karena berbagai alasan, seperti keamanan yang tidak memadai atau format yang tidak valid. Untuk detailnya, lihat Bantuan layanan pembuatan profil. |
Total Appdomains | Menampilkan jumlah puncak domain aplikasi yang dimuat sejak aplikasi dimulai. |
Total appdomain yang dibongkar | Menampilkan jumlah total domain aplikasi yang dibongkar sejak aplikasi dimulai. Jika domain aplikasi dimuat dan dibongkar beberapa kali, penghitung ini naik setiap kali domain aplikasi dibongkar. |
Total Rakitan | Menampilkan jumlah total rakitan yang dimuat sejak aplikasi dimulai. Jika rakitan dimuat sebagai domain netral dari beberapa domain aplikasi, penghitung ini hanya dinaikkan sekali. |
Total Kelas yang Dimuat | Menampilkan jumlah kumulatif kelas yang dimuat di semua rakitan sejak aplikasi dimulai. |
Penghitung performa kunci dan utas
Kategori .NET CLR LocksAndThreads mencakup penghitung yang menyediakan informasi tentang kunci dan utas terkelola yang digunakan aplikasi. Tabel berikut menjelaskan penghitung performa ini.
Penghitung kinerja | Deskripsi |
---|---|
# dari Utas logis saat ini | Menampilkan jumlah objek utas terkelola saat ini dalam aplikasi. Penghitung ini mempertahankan jumlah utas yang berjalan dan dihentikan. Penghitung ini bukan rata-rata dari waktu ke waktu; hanya menampilkan nilai terakhir yang diamati. |
# dari Utas fisik saat ini | Menampilkan jumlah utas sistem operasi asli yang dibuat dan dimiliki oleh runtime bahasa umum untuk bertindak sebagai utas yang mendasari untuk objek utas terkelola. Nilai penghitung ini tidak termasuk utas yang digunakan oleh runtime bahasa umum dalam operasi internalnya; ini adalah subset dari utas dalam proses sistem operasi. |
# dari utas yang dikenali saat ini | Menampilkan jumlah utas yang saat ini dikenali oleh runtime. Utas ini dikaitkan dengan objek utas terkelola yang sesuai. Runtime bahasa umum tidak membuat utas ini, tetapi telah berjalan di dalam runtime bahasa umum setidaknya sekali. Hanya utas unik yang dilacak; utas dengan ID utas yang sama yang masuk kembali runtime bahasa umum atau dibuat ulang setelah alur keluar tidak dihitung dua kali. |
# dari total Utas yang dikenali | Menampilkan jumlah total utas yang telah dikenali oleh runtime bahasa umum sejak aplikasi dimulai. Utas ini dikaitkan dengan objek utas terkelola yang sesuai. Runtime bahasa umum tidak membuat utas ini, tetapi telah berjalan di dalam runtime bahasa umum setidaknya sekali. Hanya utas unik yang dilacak; utas dengan ID utas yang sama yang masuk kembali runtime bahasa umum atau dibuat ulang setelah alur keluar tidak dihitung dua kali. |
Tingkat Ketidakcocokan/Detik | Menampilkan laju di mana utas dalam upaya runtime bahasa umum untuk memperoleh kunci terkelola tidak berhasil. |
Panjang Antrean Saat Ini | Menampilkan jumlah total utas yang saat ini menunggu untuk memperoleh kunci terkelola dalam aplikasi. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan nilai terakhir yang diamati. |
Panjang Antrean/detik | Menampilkan jumlah utas per detik yang menunggu untuk memperoleh kunci dalam aplikasi. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Puncak Panjang Antrean | Menampilkan jumlah total utas yang menunggu untuk memperoleh kunci terkelola sejak aplikasi dimulai. |
laju utas yang dikenali/detik | Menampilkan jumlah utas per detik yang telah dikenali oleh runtime. Utas ini dikaitkan dengan objek utas terkelola yang sesuai. Runtime bahasa umum tidak membuat utas ini, tetapi telah berjalan di dalam runtime bahasa umum setidaknya sekali. Hanya utas unik yang dilacak; utas dengan ID utas yang sama yang masuk kembali runtime bahasa umum atau dibuat ulang setelah alur keluar tidak dihitung dua kali. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Total # Ketidakcocokan | Menampilkan jumlah total berapa kali utas dalam runtime bahasa umum telah mencoba untuk memperoleh kunci terkelola yang tidak berhasil. |
Penghitung performa Memori
Kategori Memori CLR .NET mencakup penghitung yang memberikan informasi tentang pengumpul sampah. Tabel berikut menjelaskan penghitung performa ini.
Penghitung kinerja | Deskripsi |
---|---|
# Byte di semua Timbunan | Menampilkan jumlah penghitung Ukuran Timbunan Gen 1, Ukuran Timbunan Gen 2, dan Ukuran Timbunan Objek Besar. Penghitung ini menunjukkan memori saat ini yang dialokasikan dalam byte pada tumpukan pengumpulan sampah. |
# Handel GC | Menampilkan jumlah handel pengumpulan sampah saat ini yang sedang digunakan. Handel pengumpulan sampah ditangani ke sumber daya di luar runtime bahasa umum dan lingkungan terkelola. |
# Koleksi Gen 0 | Menampilkan berapa kali objek generasi 0 (yaitu, objek termuda, yang terakhir dialokasikan) adalah sampah yang dikumpulkan sejak aplikasi dimulai. Pengumpulan sampah generasi 0 terjadi ketika memori yang tersedia di generasi 0 tidak cukup untuk memenuhi permintaan alokasi. Penghitung ini bertahap pada akhir pengumpulan sampah generasi 0. Pengumpulan sampah generasi lebih tinggi mencakup semua koleksi generasi yang lebih rendah. Penghitung ini secara eksplisit bertahap ketika pengumpulan sampah generasi yang lebih tinggi (generasi 1 atau 2) terjadi. Penghitung ini menampilkan nilai pengamatan terakhir. Nilai penghitung _Global_ tidak akurat dan harus diabaikan. |
# Koleksi Gen 1 | Menampilkan berapa kali objek generasi 1 dikumpulkan sampah sejak aplikasi dimulai. Penghitung bertahap pada akhir pengumpulan sampah generasi 1. Pengumpulan sampah generasi lebih tinggi mencakup semua koleksi generasi yang lebih rendah. Penghitung ini secara eksplisit bertahap ketika pengumpulan sampah generasi (generasi 2) yang lebih tinggi terjadi. Penghitung ini menampilkan nilai pengamatan terakhir. Nilai penghitung _Global_ tidak akurat dan harus diabaikan. |
# Koleksi Gen 2 | Menampilkan berapa kali objek generasi 2 dikumpulkan sampah sejak aplikasi dimulai. Penghitung bertahap pada akhir pengumpulan sampah generasi 2 (juga disebut pengumpulan sampah penuh). Penghitung ini menampilkan nilai pengamatan terakhir. Nilai penghitung _Global_ tidak akurat dan harus diabaikan. |
# GC yang diinduksi | Menampilkan frekuensi puncak pengumpulan sampah dilakukan karena panggilan eksplisit ke GC.Collect. Adalah praktik yang baik untuk membiarkan pengumpul sampah menyempurnakan frekuensi pengumpulannya. |
# dari Objek Yang Disematkan | Menampilkan jumlah objek yang disematkan yang ditemui dalam pengumpulan sampah terakhir. Objek yang disematkan adalah objek yang tidak dapat dipindahkan oleh pengumpul sampah dalam memori. Penghitung ini melacak objek yang disematkan hanya di tumpukan yang dikumpulkan sampah. Misalnya, pengumpulan sampah generasi 0 menyebabkan enumerasi objek yang disematkan hanya di tumpukan generasi 0. |
# Blok Sink yang digunakan | Menampilkan jumlah blok sinkronisasi saat ini yang digunakan. Blok sinkronisasi adalah struktur data per objek yang dialokasikan untuk menyimpan informasi sinkronisasi. Blok memegang referensi lemah ke objek terkelola dan harus dipindai oleh pengumpul sampah. Blok sinkronisasi tidak terbatas pada penyimpanan informasi sinkronisasi; blok juga dapat menyimpan metadata interop COM. Penghitung ini menunjukkan masalah performa dengan penggunaan primitif sinkronisasi yang berat. |
# Total Byte yang diterapkan | Menampilkan jumlah memori virtual, dalam byte, yang saat ini dilakukan oleh pengumpul sampah. Memori yang diterapkan adalah memori fisik tempat ruang telah dicadangkan dalam file halaman disk. |
# Total Byte yang dipesan | Menampilkan jumlah memori virtual, dalam byte, yang saat ini dicadangkan oleh pengumpul sampah. Memori yang dipesan adalah ruang memori virtual yang disediakan untuk aplikasi ketika tidak ada disk atau halaman memori utama yang telah digunakan. |
% Waktu dalam GC | Menampilkan persentase waktu yang berlalu yang dihabiskan untuk melakukan pengumpulan sampah sejak siklus pengumpulan sampah terakhir. Penghitung ini biasanya menunjukkan pekerjaan yang dilakukan oleh pengumpul sampah untuk mengumpulkan dan memampatkan memori atas nama aplikasi. Penghitung ini hanya diperbarui di akhir setiap pengumpulan sampah. Penghitung ini bukan rata-rata; nilainya mencerminkan nilai terakhir yang diamati. |
Byte yang Dialokasikan/detik | Menampilkan jumlah byte per detik yang dialokasikan pada tumpukan pengumpulan sampah. Penghitung ini diperbarui di akhir setiap pengumpulan sampah, bukan di setiap alokasi. Penghitung ini bukan rata-rata dari waktu ke waktu; ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Finalisasi Penyintas | Menampilkan jumlah objek yang dikumpulkan sampah yang bertahan dari koleksi karena menunggu untuk diselesaikan. Jika objek ini menyimpan referensi ke objek lain, objek tersebut juga bertahan tetapi tidak dihitung oleh penghitung ini. Penghitung Memori Penyelesaian yang Dipromosikan dari Gen 0 mewakili semua memori yang bertahan karena finalisasi. Penghitung ini tidak kumulatif; ini diperbarui di akhir setiap pengumpulan sampah dengan jumlah yang selamat selama pengumpulan tertentu saja. Penghitung ini menunjukkan overhead ekstra yang mungkin dikeluarkan aplikasi karena finalisasi. |
Ukuran timbunan Gen 0 | Menampilkan byte maksimum yang dapat dialokasikan pada generasi 0; ini tidak menunjukkan jumlah byte saat ini yang dialokasikan pada generasi 0. Pengumpulan sampah generasi 0 terjadi ketika alokasi sejak koleksi terakhir melebihi ukuran ini. Ukuran generasi 0 disesuaikan oleh pengumpul sampah dan dapat berubah selama eksekusi aplikasi. Pada akhir koleksi generasi 0, ukuran timbunan generasi 0 adalah 0 byte. Penghitung ini menampilkan ukuran, dalam byte, alokasi yang memanggil pengumpulan sampah generasi 0 berikutnya. Penghitung ini diperbarui di akhir pengumpulan sampah, bukan di setiap alokasi. |
Gen 0 Byte Yang Dipromosikan/Detik | Menampilkan byte per detik yang dipromosikan dari generasi 0 ke generasi 1. Memori dipromosikan ketika bertahan dari pengumpulan sampah. Penghitung ini adalah indikator objek yang relatif berumur panjang yang dibuat per detik. Penghitung ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Ukuran timbunan Gen 1 | Menampilkan jumlah byte saat ini pada generasi 1; penghitung ini tidak menampilkan ukuran maksimum generasi 1. Objek tidak dialokasikan secara langsung dalam generasi ini; objek dipromosikan dari pengumpulan sampah generasi 0 sebelumnya. Penghitung ini diperbarui di akhir pengumpulan sampah, bukan di setiap alokasi. |
Gen 1 Byte Yang Dipromosikan/Detik | Menampilkan byte per detik yang dipromosikan dari generasi 1 ke generasi 2. Objek yang dipromosikan hanya karena menunggu untuk diselesaikan tidak termasuk dalam penghitung ini. Memori dipromosikan ketika bertahan dari pengumpulan sampah. Tidak ada yang dipromosikan dari generasi 2 karena merupakan generasi tertua. Penghitung ini adalah indikator objek berumur sangat panjang yang dibuat per detik. Penghitung ini menampilkan perbedaan antara nilai yang diamati dalam dua sampel terakhir yang dibagi dengan durasi interval sampel. |
Ukuran timbunan Gen 2 | Menampilkan jumlah byte saat ini di generasi 2. Objek tidak dialokasikan secara langsung dalam generasi ini; objek dipromosikan dari generasi 1 selama pengumpulan sampah generasi 1 sebelumnya. Penghitung ini diperbarui di akhir pengumpulan sampah, bukan di setiap alokasi. |
Ukuran Tumpuk Objek Besar | Menampilkan ukuran saat ini, dalam byte, dari timbunan objek besar. Objek yang lebih besar dari sekitar 85.000 byte diperlakukan sebagai objek besar oleh pengumpul sampah dan langsung dialokasikan dalam tumpukan khusus. Objek tidak dipromosikan melalui generasi. Penghitung ini diperbarui di akhir pengumpulan sampah, bukan di setiap alokasi. |
ID Proses | Menampilkan ID proses dari instans proses Runtime Bahasa Umum yang sedang dipantau. |
Memori Penyelesaian yang dipromosikan dari Gen 0 | Menampilkan byte memori yang dipromosikan dari generasi 0 ke generasi 1 hanya karena byte menunggu untuk diselesaikan. Penghitung ini tidak kumulatif; ini menampilkan nilai yang diamati di akhir pengumpulan sampah terakhir. |
Memori yang Dipromosikan dari Gen 0 | Menampilkan byte memori yang bertahan dari pengumpulan sampah dan dipromosikan dari generasi 0 hingga generasi 1. Objek yang dipromosikan hanya karena menunggu untuk diselesaikan tidak termasuk dalam penghitung ini. Penghitung ini tidak kumulatif; ini menampilkan nilai yang diamati di akhir pengumpulan sampah terakhir. |
Memori yang Dipromosikan dari Gen 1 | Menampilkan byte memori yang bertahan dari pengumpulan sampah dan dipromosikan dari generasi 1 ke generasi 2. Objek yang dipromosikan hanya karena menunggu untuk diselesaikan tidak termasuk dalam penghitung ini. Penghitung ini tidak kumulatif; ini menampilkan nilai yang diamati di akhir pengumpulan sampah terakhir. Penghitung ini diatur ulang ke 0 jika pengumpulan sampah terakhir hanya koleksi generasi 0. |
Penghitung performa jaringan
Kategori .NET CLR Networking mencakup penghitung yang menyediakan informasi tentang data yang dikirim dan diterima aplikasi melalui jaringan. Tabel berikut menjelaskan penghitung performa ini.
Penghitung kinerja | Deskripsi |
---|---|
Byte Diterima | Jumlah total kumulatif byte yang diterima oleh semua objek Socket dalam AppDomain sejak proses dimulai. Jumlah ini mencakup data dan informasi protokol apa pun yang tidak ditentukan oleh TCP/IP. |
Byte Terkirim | Jumlah kumulatif byte yang dikirim oleh semua objek Socket dalam AppDomain sejak proses dimulai. Jumlah ini mencakup data dan informasi protokol apa pun yang tidak ditentukan oleh TCP/IP. |
Koneksi Dibuat | Jumlah total kumulatif objek Socket untuk soket aliran yang pernah terhubung dalam AppDomain sejak proses dimulai. |
Datagram Diterima | Jumlah total paket datagram kumulatif yang diterima oleh semua objek Socket dalam AppDomain sejak proses dimulai. |
Datagram Terkirim | Jumlah total paket datagram kumulatif yang dikirim oleh semua objek Socket dalam AppDomain sejak proses dimulai. |
Masa Pakai Rata-Rata HttpWebRequests | Waktu rata-rata penyelesaian untuk semua objek HttpWebRequest yang berakhiran interval terakhir dalam AppDomain sejak proses dimulai. |
Waktu Antrean Rata-rata HttpWebRequests | Rata-rata waktu pada antrean untuk semua objek HttpWebRequest yang meninggalkan antrean dalam interval terakhir dalam AppDomain sejak proses dimulai. |
HttpWebRequests Dibuat/detik | Jumlah objek HttpWebRequest yang dibuat per detik dalam AppDomain. |
HttpWebRequests Antrean/sec | Jumlah objek HttpWebRequest yang ditambahkan ke antrean per detik dalam AppDomain. |
HttpWebRequests Dibatalkan/detik | Jumlah objek HttpWebRequest tempat aplikasi memanggil metode Abort per detik dalam AppDomain. |
HttpWebRequests Gagal/detik | Jumlah objek HttpWebRequest yang menerima kode status gagal dari server per detik dalam AppDomain. |
Ada beberapa kelas penghitung performa jaringan yang didukung:
- Penghitung peristiwa yang mengukur berapa kali beberapa peristiwa terjadi.
- Penghitung data yang mengukur kuantitas data yang dikirim atau diterima.
- Penghitung durasi yang mengukur berapa lama proses yang berbeda berlangsung. Waktu diukur pada objek setiap interval (biasanya dalam detik) setelah keluar dari status yang berbeda.
- Per-Interval penghitung yang mengukur jumlah objek yang membuat transisi tertentu per interval (biasanya per detik).
Penghitung performa jaringan untuk peristiwa meliputi hal-hal berikut:
- Koneksi Dibuat
- Datagram Diterima
- Datagram Terkirim
Penghitung performa ini memberikan hitungan sejak proses dimulai. Jumlah koneksi Socket yang dibuat mencakup panggilan metode Socket eksplisit oleh aplikasi untuk koneksi soket aliran yang dibuat serta panggilan internal yang dilakukan oleh kelas lain (HttpWebRequest, FtpWebRequest, WebClient, dan TcpClient, misalnya) ke kelas Socket
Hitungan untuk Datagram yang Diterima dan Datagram Dikirim mencakup paket datagram yang dikirim atau diterima menggunakan panggilan metode Socket eksplisit oleh aplikasi serta panggilan internal yang dilakukan oleh kelas lain (UdpClient, misalnya) ke Socket. kelas. Hitungan Datagram yang Diterima dan Datagram Terkirim juga dapat digunakan untuk memberikan ukuran yang sangat kasar tentang berapa banyak byte yang dikirim atau diterima menggunakan datagram dengan mengasumsikan ukuran rata-rata untuk datagram.
Penghitung performa jaringan untuk data mencakup hal-hal berikut:
- Byte Diterima
- Byte Terkirim
Penghitung di atas memberikan jumlah byte sejak proses dimulai.
Ada dua penghitung durasi yang mengukur berapa lama waktu yang dibutuhkan objek untuk HttpWebRequest melewati seluruh siklus hidupnya atau hanya sebagian darinya:
- Masa Pakai Rata-Rata HttpWebRequests
- Waktu Antrean Rata-rata HttpWebRequests
Untuk penghitung Masa Pakai Rata-Rata HttpWebRequests, masa pakai sebagian besar objek HttpWebRequest selalu dimulai dengan waktu objek dibuat hingga waktu aliran respons ditutup oleh aplikasi. Ada dua kasus yang jarang terjadi:
Jika aplikasi tidak pernah memanggil metode GetResponse atau BeginGetResponse, maka masa pakai objek HttpWebRequest diabaikan.
Jika objek HttpWebRequest menampilkan WebException saat memanggil metode GetResponse atau EndGetResponse, masa pakai berakhir ketika pengecualian ditampilkan. Secara teknis, aliran respons yang mendasar juga ditutup pada saat itu (aliran respons yang dikembalikan kepada pengguna benar-benar aliran memori yang berisi salinan aliran respons).
Ada empat penghitung yang melacak masalah objek HttpWebRequest tertentu per interval. Penghitung performa ini dapat membantu pengembang aplikasi, administrator, dan staf dukungan lebih memahami apa yang dilakukan objek HttpWebRequest. Penghitung mencakup hal-hal berikut:
- HttpWebRequests Dibuat/detik
- HttpWebRequests Antrean/sec
- HttpWebRequests Dibatalkan/detik
- HttpWebRequests Gagal/detik
Untuk penghitung HttpWebRequests Aborted/sec, panggilan internal ke Abort juga dihitung. Panggilan internal ini biasanya disebabkan oleh batas waktu yang mungkin ingin diukur oleh aplikasi.
Penghitung HttpWebRequests Failed/sec berisi jumlah objek HttpWebRequest yang menerima kode status gagal dari server per detik. Ini berarti bahwa kode status yang diterima dari server Http di akhir permintaan tidak berada dalam rentang antara 200 hingga 299. Kode status yang ditangani dan menghasilkan permintaan baru (banyak dari 401 Kode status tidak sah, misalnya) akan gagal atau tidak gagal berdasarkan hasil percobaan ulang. Jika aplikasi akan melihat kesalahan berdasarkan coba lagi, penghitung ini akan bertahap.
Penghitung performa jaringan dapat diakses dan dikelola menggunakan kelas PerformanceCounter terkait dan di namespace layanan System.Diagnostics. Penghitung performa jaringan juga dapat dilihat dengan konsol Windows Performance Monitor.
Penghitung performa jaringan perlu diaktifkan dalam file konfigurasi yang akan digunakan. Semua penghitung performa jaringan diaktifkan atau dinonaktifkan dengan satu pengaturan dalam file konfigurasi. Penghitung performa jaringan individual tidak dapat diaktifkan atau dinonaktifkan. Untuk informasi selengkapnya, lihat <performanceCounter> Elemen (Pengaturan Jaringan).
Jika penghitung jaringan diaktifkan, ini akan membuat dan memperbarui penghitung performa per-AppDomain dan global. Jika dinonaktifkan, aplikasi tidak akan menyediakan data penghitung performa jaringan apa pun.
Penghitung kinerja dikelompokkan ke dalam kategori. Kode berikut mencantumkan semua kategori:
PerformanceCounterCategory[] Array = PerformanceCounterCategory.GetCategories();
for (int i = 0; i < Array.Length; i++)
{
Console.Out.WriteLine("{0}. Name={1} Help={2}", i, Array[i].CategoryName, Array[i].CategoryHelp);
}
Penghitung performa jaringan tercantum dalam dua kategori:
"Jaringan Runtime Bahasa Umum .NET" - penghitung performa asli yang diperkenalkan pada .NET Framework Versi 2 dan didukung pada .NET Framework Versi 2 dan yang lebih baru.
"Jaringan Runtime Bahasa Umum .NET 4.0.0.0" - Semua penghitung soket di atas ditambah penghitung performa baru yang didukung pada .NET Framework Versi 4 dan yang lebih baru. Penghitung baru ini memberikan informasi performa pada objek HttpWebRequest.
Untuk informasi selengkapnya tentang mengakses dan mengelola penghitung kinerja dalam aplikasi, lihat Penghitung Performa .
Penghitung performa keamanan
Kategori Keamanan CLR .NET mencakup penghitung yang memberikan informasi tentang pemeriksaan keamanan yang dilakukan runtime bahasa umum untuk aplikasi. Tabel berikut menjelaskan penghitung performa ini.
Penghitung kinerja | Deskripsi |
---|---|
# Link Time Checks | Menampilkan jumlah total pemeriksaan keamanan akses kode waktu link sejak aplikasi dimulai. Pemeriksaan keamanan akses kode waktu link dilakukan ketika penelepon menuntut izin tertentu pada waktu kompilasi just-in-time (JIT). Pemeriksaan waktu link dilakukan sekali per penelepon. Jumlah ini tidak menunjukkan masalah performa yang serius; ini hanya menunjukkan aktivitas sistem keamanan. |
% Waktu dalam pemeriksaan RT | Menampilkan persentase waktu yang berlalu yang dihabiskan untuk melakukan pemeriksaan keamanan akses kode runtime bahasa umum sejak sampel terakhir. Penghitung ini diperbarui pada akhir pemeriksaan keamanan .NET Framework. Ini bukan rata-rata; ini mewakili nilai terakhir yang diamati. |
% Waktu Sig Mengautentikasi | Disiapkan untuk penggunaan masa mendatang. |
Kedalaman Stack Walk | Menampilkan kedalaman tumpukan selama pemeriksaan keamanan akses kode runtime bahasa umum terakhir tersebut. Pemeriksaan keamanan akses kode runtime bahasa umum dilakukan dengan berjalan di tumpukan. Penghitung ini bukan rata-rata; hanya menampilkan nilai terakhir yang diamati. |
Total Pemeriksaan Runtime | Menampilkan jumlah total pemeriksaan keamanan akses kode runtime bahasa umum yang dilakukan sejak aplikasi dimulai. Pemeriksaan keamanan akses kode runtime bahasa umum dilakukan ketika penelepon menuntut izin tertentu. Pemeriksaan runtime bahasa umum dilakukan pada setiap panggilan oleh penelepon dan memeriksa tumpukan utas pemanggil saat ini. Ketika digunakan dengan penghitung Kedalaman Stack Walk, penghitung ini menunjukkan penalti performa yang terjadi untuk pemeriksaan keamanan. |