Penghitung kinerja di .NET Framework
Artikel ini menyediakan daftar penghitung kinerja yang dapat Anda temukan di Windows Performance Monitor.
Penghitung kinerja pengecualian
Kategori Konsol performa .NET CLR Exceptions mencakup penghitung yang memberikan informasi tentang pengecualian yang dilemparkan oleh aplikasi. Tabel berikut menjelaskan penghitung kinerja ini.
| Penghitung kinerja | Deskripsi |
|---|---|
| # dari Exceps Dilemparkan | Menampilkan jumlah total pengecualian yang dilemparkan sejak aplikasi dimulai. Ini termasuk pengecualian .NET dan pengecualian tidak terkelola yang dikonversi menjadi pengecualian .NET. Misalnya, HRESULT yang dikembalikan dari kode yang tidak dikelola dikonversi menjadi pengecualian dalam kode terkelola. Penghitung ini mencakup pengecualian yang ditangani dan tidak tertangani. Pengecualian yang ditumbuhkan kembali dihitung lagi. |
| # dari Exceps Dilemparkan / Detik | Menampilkan jumlah pengecualian yang dilemparkan per detik. Ini termasuk pengecualian .NET dan pengecualian tidak terkelola yang dikonversi menjadi pengecualian .NET. Misalnya, HRESULT yang dikembalikan dari kode yang tidak dikelola dikonversi menjadi pengecualian dalam kode terkelola. Penghitung ini mencakup 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) dilemparkan. |
| # 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 Akhirnya / Detik | Menampilkan jumlah blok akhirnya yang dijalankan per detik. Blok akhirnya dijamin akan dijalankan terlepas dari bagaimana blok percobaan 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 melemparkan pengecualian ke bingkai yang menangani pengecualian, per detik. Penghitung ini direset ke nol ketika handler 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 kinerja interop
Kategori Interop .NET CLR konsol performa mencakup penghitung yang memberikan informasi tentang interaksi aplikasi dengan komponen COM, layanan COM+, dan pustaka jenis eksternal. Tabel berikut menjelaskan penghitung kinerja 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. |
| # marshalling | Menampilkan jumlah total kali argumen dan nilai pengembalian telah di-marshalled dari dikelola ke kode yang tidak dikelola, dan sebaliknya, sejak aplikasi dimulai. Penghitung ini tidak bertahap jika stubs inlined. (Stub bertanggung jawab untuk marshalling argumen dan mengembalikan nilai). Stub biasanya sebaris jika overhead marshalling kecil. |
| # dari Stubs | Menampilkan jumlah stub saat ini yang dibuat oleh runtime bahasa umum. Stub bertanggung jawab untuk marshalling argumen dan mengembalikan nilai dari dikelola ke kode yang tidak dikelola, dan sebaliknya, selama panggilan interop COM atau platform memanggil panggilan. |
| # ekspor TLB / detik | Disiapkan untuk penggunaan masa mendatang. |
| # impor TLB / detik | Disiapkan untuk penggunaan masa mendatang. |
Penghitung kinerja JIT
Kategori Konsol performa .NET CLR JIT mencakup penghitung yang memberikan informasi tentang kode yang telah dikompilasi JIT. Tabel berikut menjelaskan penghitung kinerja ini.
| Penghitung kinerja | Deskripsi |
|---|---|
| # dari IL Byte JITted | Menampilkan jumlah total byte bahasa perantara Microsoft (MSIL) yang dikompilasi oleh pengkompilasi just-in-time (JIT) sejak aplikasi dimulai. Penghitung ini setara dengan Total # penghitung IL 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. |
| IL Byte Jitted / detik | Menampilkan jumlah byte MSIL 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 pengkompilasi JIT sejak aplikasi dimulai. Kegagalan ini dapat terjadi jika MSIL tidak dapat diverifikasi atau jika ada kesalahan internal dalam pengkompilasi JIT. |
| Total # dari IL Byte Jitted | Menampilkan total byte MSIL yang dikompilasi JIT sejak aplikasi dimulai. Penghitung ini setara dengan # penghitung IL Byte Jitted . |
Memuat penghitung kinerja
Konsol performa .NET kategori Pemuatan CLR mencakup penghitung yang menyediakan informasi tentang rakitan, kelas, dan domain aplikasi yang dimuat. Tabel berikut menjelaskan penghitung kinerja 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 assembly 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 assembly 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 assembly 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 kinerja kunci dan utas
Kategori Konsol performa .NET CLR LocksAndThreads mencakup penghitung yang menyediakan informasi tentang kunci dan utas terkelola yang digunakan aplikasi. Tabel berikut menjelaskan penghitung kinerja 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 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 tidak membuat utas ini, tetapi telah berjalan di dalam runtime setidaknya sekali. Hanya utas unik yang dilacak; utas dengan ID utas yang sama yang masuk kembali runtime atau dibuat ulang setelah alur keluar tidak dihitung dua kali. |
| # dari total Utas yang dikenali | Menampilkan jumlah total utas yang telah dikenali oleh runtime sejak aplikasi dimulai. Utas ini dikaitkan dengan objek utas terkelola yang sesuai. Runtime tidak membuat utas ini, tetapi telah berjalan di dalam runtime setidaknya sekali. Hanya utas unik yang dilacak; utas dengan ID utas yang sama yang masuk kembali runtime atau dibuat ulang setelah alur keluar tidak dihitung dua kali. |
| Tingkat Ketidakcocokan / Detik | Menampilkan laju di mana utas dalam upaya runtime 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 tidak membuat utas ini, tetapi telah berjalan di dalam runtime setidaknya sekali. Hanya utas unik yang dilacak; utas dengan ID utas yang sama yang masuk kembali runtime 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 # Pertikaian | Menampilkan jumlah total berapa kali utas dalam runtime telah mencoba untuk memperoleh kunci terkelola yang tidak berhasil. |
Penghitung kinerja memori
Konsol performa kategori Memori .NET CLR mencakup penghitung yang memberikan informasi tentang pengumpul sampah. Tabel berikut menjelaskan penghitung kinerja ini.
| Penghitung kinerja | Deskripsi |
|---|---|
| # Byte di semua Susunan | 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. |
| # Penanganan 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 terakhir yang diamati. 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 terakhir yang diamati. Nilai penghitung _Global_ tidak akurat dan harus diabaikan. |
| # Koleksi Gen 2 | Menampilkan berapa kali objek generasi 2 dikumpulkan sampah sejak aplikasi dimulai. Penghitungnya bertahap pada akhir pengumpulan sampah generasi 2 (juga disebut pengumpulan sampah penuh). Penghitung ini menampilkan nilai terakhir yang diamati. Nilai penghitung _Global_ tidak akurat dan harus diabaikan. |
| # Diinduksi GC | 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 pada 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. Mereka menyimpan referensi lemah ke objek terkelola dan harus dipindai oleh pengumpul sampah. Blok sinkronisasi tidak terbatas pada penyimpanan informasi sinkronisasi; mereka 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 yang ruangnya 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 dicadangkan adalah ruang memori virtual yang disediakan untuk aplikasi ketika tidak ada disk atau halaman memori utama yang telah digunakan. |
| % Waktu di 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 kumpulan karena mereka menunggu untuk diselesaikan. Jika objek ini menyimpan referensi ke objek lain, objek tersebut juga bertahan tetapi tidak dihitung oleh penghitung ini. Penghitung Finalization-Memory 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 orang 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 disetel oleh pengumpul sampah dan dapat berubah selama eksekusi aplikasi. Pada akhir koleksi generasi 0, ukuran tumpuk 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. |
| Byte Yang Dipromosikan Gen 0/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 dalam generasi 1; penghitung ini tidak menampilkan ukuran maksimum generasi 1. Objek tidak dialokasikan secara langsung dalam generasi ini; mereka dipromosikan dari pengumpulan sampah generasi 0 sebelumnya. Penghitung ini diperbarui di akhir pengumpulan sampah, bukan di setiap alokasi. |
| Byte Yang Dipromosikan Gen 1/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 ini adalah generasi tertua. Penghitung ini adalah indikator objek yang sangat 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 2 | Menampilkan jumlah byte saat ini di generasi 2. Objek tidak dialokasikan secara langsung dalam generasi ini; mereka dipromosikan dari generasi 1 selama pengumpulan sampah generasi 1 sebelumnya. Penghitung ini diperbarui di akhir pengumpulan sampah, bukan di setiap alokasi. |
| Ukuran Susunan 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. Mereka tidak dipromosikan melalui generasi. Penghitung ini diperbarui di akhir pengumpulan sampah, bukan di setiap alokasi. |
| ID Proses | Menampilkan ID proses instans proses CLR yang sedang dipantau. |
| Finalization-Memory yang dipromosikan dari Gen 0 | Menampilkan byte memori yang dipromosikan dari generasi 0 ke generasi 1 hanya karena mereka 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 ke 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 kinerja jaringan
Kategori Konsol performa .NET CLR Networking mencakup penghitung yang memberikan informasi tentang data yang dikirim dan diterima aplikasi melalui jaringan. Tabel berikut menjelaskan penghitung kinerja ini.
| Penghitung kinerja | Deskripsi |
|---|---|
| Byte Diterima | Jumlah total kumulatif byte yang diterima oleh semua Socket objek dalam AppDomain sejak proses dimulai. Jumlah ini mencakup data dan informasi protokol apa pun yang tidak ditentukan oleh TCP/IP. |
| Byte yang Dikirim | Jumlah kumulatif byte yang dikirim oleh semua Socket objek dalam AppDomain sejak proses dimulai. Jumlah ini mencakup data dan informasi protokol apa pun yang tidak ditentukan oleh TCP/IP. |
| Koneksi Dibuat | Jumlah Socket total objek kumulatif untuk soket aliran yang pernah terhubung dalam AppDomain sejak proses dimulai. |
| Datagram Diterima | Jumlah total paket datagram kumulatif yang diterima oleh semua Socket objek dalam AppDomain sejak proses dimulai. |
| Datagram Terkirim | Jumlah total paket datagram kumulatif yang dikirim oleh semua Socket objek dalam AppDomain sejak proses dimulai. |
| Masa Pakai Rata-Rata HttpWebRequests | Waktu rata-rata penyelesaian untuk semua HttpWebRequest objek yang berakhiran interval terakhir dalam AppDomain sejak proses dimulai. |
| Waktu Antrean Rata-rata HttpWebRequests | Rata-rata time-on-queue untuk semua HttpWebRequest objek yang meninggalkan antrean dalam interval terakhir dalam AppDomain sejak proses dimulai. |
| HttpWebRequests Created/sec | Jumlah HttpWebRequest objek yang dibuat per detik dalam AppDomain. |
| HttpWebRequests Antre/detik | Jumlah HttpWebRequest objek yang ditambahkan ke antrean per detik dalam AppDomain. |
| HttpWebRequests Dibatalkan/detik | Jumlah HttpWebRequest objek di mana aplikasi memanggil Abort metode per detik dalam AppDomain. |
| HttpWebRequests Gagal/detik | Jumlah HttpWebRequest objek yang menerima kode status gagal dari server per detik dalam AppDomain. |
Ada beberapa kelas penghitung kinerja jaringan yang didukung:
Penghitung peristiwa yang mengukur berapa kali beberapa peristiwa terjadi.
Penghitung data yang mengukur jumlah 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 kinerja jaringan untuk peristiwa meliputi hal-hal berikut:
Koneksi Dibuat
Datagram Diterima
Datagram Terkirim
Penghitung kinerja ini memberikan hitungan sejak proses dimulai. Jumlah Socket koneksi yang dibuat mencakup panggilan metode eksplisit Socket oleh aplikasi untuk koneksi soket aliran yang dibuat serta panggilan internal yang dilakukan oleh kelas lain (HttpWebRequest, , FtpWebRequest, WebClientdan TcpClient, misalnya) ke Socket kelas
Hitungan untuk Datagram yang Diterima dan Datagram Terkirim mencakup paket datagram yang dikirim atau diterima menggunakan panggilan metode eksplisit Socket 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 kinerja jaringan untuk data mencakup hal-hal berikut:
Byte yang Diterima
Byte yang Dikirim
Penghitung di atas memberikan hitungan byte sejak proses dimulai.
Ada dua penghitung durasi yang mengukur berapa lama waktu yang dibutuhkan objek untuk HttpWebRequest melewati seluruh siklus hidup mereka atau hanya sebagian darinya:
Masa Pakai Rata-Rata HttpWebRequests
Waktu Antrean Rata-rata HttpWebRequests
Untuk penghitung Seumur Hidup Rata-Rata HttpWebRequests , masa pakai sebagian besar HttpWebRequest objek selalu dimulai dengan waktu objek dibuat sampai waktu aliran respons ditutup oleh aplikasi. Ada dua kasus yang jarang terjadi:
Jika aplikasi tidak pernah memanggil GetResponse metode atau BeginGetResponse , maka masa HttpWebRequest pakai objek diabaikan.
HttpWebRequest Jika objek melempar WebException saat memanggil GetResponse metode atau EndGetResponse , masa pakai berakhir ketika pengecualian dilemparkan. 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 tertentu HttpWebRequest per interval. Penghitung kinerja ini dapat membantu pengembang aplikasi, administrator, dan staf dukungan lebih memahami apa yang HttpWebRequest dilakukan objek. Penghitung mencakup hal-hal berikut:
HttpWebRequests Created/sec
HttpWebRequests Antre/detik
HttpWebRequests Dibatalkan/detik
HttpWebRequests Gagal/detik
Untuk penghitung HttpWebRequests Aborted/sec , panggilan internal juga Abort dihitung. Panggilan internal ini biasanya disebabkan oleh batas waktu yang mungkin ingin diukur oleh aplikasi.
Penghitung HttpWebRequests Failed/sec berisi jumlah HttpWebRequest objek 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 kembali. Jika aplikasi akan melihat kesalahan berdasarkan coba lagi, penghitung ini akan bertahap.
Penghitung kinerja jaringan dapat diakses dan dikelola menggunakan PerformanceCounter kelas terkait dan di System.Diagnostics namespace layanan. Penghitung kinerja jaringan juga dapat dilihat dengan konsol Windows Performance Monitor.
Penghitung kinerja jaringan perlu diaktifkan dalam file konfigurasi yang akan digunakan. Semua penghitung kinerja jaringan diaktifkan atau dinonaktifkan dengan satu pengaturan dalam file konfigurasi. Penghitung kinerja jaringan individual tidak dapat diaktifkan atau dinonaktifkan. Untuk informasi selengkapnya, lihat <PerformanceCounter> Element (Network Pengaturan).
Jika penghitung jaringan diaktifkan, ini akan membuat dan memperbarui penghitung kinerja per-AppDomain dan global. Jika dinonaktifkan, aplikasi tidak akan menyediakan data penghitung kinerja jaringan apa pun.
Penghitung kinerja dikelompokkan ke dalam Kategori. Aplikasi dapat mencantumkan semua kategori dengan contoh kode berikut:
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 kinerja jaringan tercantum dalam dua kategori:
".NET CLR Networking" - penghitung kinerja asli yang diperkenalkan pada .NET Framework Versi 2 dan didukung pada .NET Framework Versi 2 dan yang lebih baru.
".NET CLR Networking 4.0.0.0" - Semua penghitung soket di atas ditambah penghitung kinerja baru yang didukung pada .NET Framework Versi 4 dan yang lebih baru. Penghitung baru ini memberikan informasi performa pada HttpWebRequest objek.
Untuk informasi selengkapnya tentang mengakses dan mengelola penghitung kinerja dalam aplikasi, lihat Penghitung Kinerja.
Penghitung kinerja keamanan
Kategori Performance console .NET CLR Security mencakup penghitung yang memberikan informasi tentang pemeriksaan keamanan yang dilakukan runtime bahasa umum untuk aplikasi. Tabel berikut menjelaskan penghitung kinerja ini.
| Penghitung kinerja | Deskripsi |
|---|---|
| # Link Time Checks | Menampilkan jumlah total pemeriksaan keamanan akses kode waktu tautan sejak aplikasi dimulai. Pemeriksaan keamanan akses kode waktu tautan dilakukan saat pemanggil menuntut izin tertentu pada waktu kompilasi just-in-time (JIT). Pemeriksaan waktu tautan dilakukan sekali per penelepon. Jumlah ini tidak menunjukkan masalah performa yang serius; itu hanya indikasi aktivitas sistem keamanan. |
| % Waktu dalam pemeriksaan RT | Menampilkan persentase waktu yang berlalu yang dihabiskan untuk melakukan pemeriksaan keamanan akses kode runtime sejak sampel terakhir. Penghitung ini diperbarui di 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 terakhir. Pemeriksaan keamanan akses kode runtime 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 yang dilakukan sejak aplikasi dimulai. Pemeriksaan keamanan akses kode runtime dilakukan ketika penelepon menuntut izin tertentu. Pemeriksaan runtime dilakukan pada setiap panggilan oleh pemanggil dan memeriksa tumpukan utas pemanggil saat ini. Ketika digunakan dengan penghitung Stack Walk Depth , penghitung ini menunjukkan penalti performa yang terjadi untuk pemeriksaan keamanan. |