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.
Pengumpul sampah menyetel sendiri dan dapat bekerja dalam berbagai skenario. Namun, Anda dapat mengatur jenis pengumpulan sampah berdasarkan karakteristik beban kerja. CLR menyediakan jenis pengumpulan sampah berikut:
Pengumpulan sampah stasiun kerja (GC), yang dirancang untuk aplikasi klien. Ini adalah varian GC default untuk aplikasi mandiri. Untuk aplikasi yang dihosting, misalnya, yang dihosting oleh ASP.NET, host menentukan rasa GC default.
Pengumpulan sampah stasiun kerja dapat bersamaan atau tidak bersamaan. Pengumpulan sampah bersamaan (atau latar belakang) memungkinkan utas terkelola untuk melanjutkan operasi selama pengumpulan sampah. Pengumpulan sampah latar belakang menggantikan pengumpulan sampah bersamaan di .NET Framework 4 dan versi yang lebih baru.
Pengumpulan sampah server, yang ditujukan untuk aplikasi server yang membutuhkan throughput dan skalabilitas tinggi.
Di .NET Core, pengumpulan sampah server dapat tidak bersamaan atau latar belakang.
Dalam .NET Framework 4.5 dan versi yang lebih baru, pengumpulan sampah server dapat tidak serentak atau di latar belakang. Dalam .NET Framework 4 dan versi sebelumnya, pengumpulan sampah server tidak bersamaan.
Ilustrasi berikut menunjukkan utas khusus yang melakukan pengumpulan sampah di server:
Pertimbangan performa
Stasiun Kerja GC
Berikut ini adalah pertimbangan utas dan performa untuk pengumpulan sampah stasiun kerja:
Pengumpulan terjadi pada utas pengguna yang memicu pengumpulan sampah dan berlangsung dengan prioritas yang sama. Karena utas pengguna biasanya berjalan pada prioritas normal, pengumpul sampah (yang berjalan pada utas prioritas normal) harus bersaing dengan utas lain untuk waktu CPU. (Utas yang menjalankan kode asli tidak ditangguhkan selama pengumpulan sampah di server atau komputer kerja.)
Pengumpulan sampah stasiun kerja selalu digunakan di komputer yang hanya memiliki satu CPU logis, terlepas dari pengaturan konfigurasinya.
Server pengumpulan sampah
Berikut ini adalah pertimbangan penggunaan utas dan performa untuk pengumpulan sampah server:
Pengumpulan terjadi pada beberapa utas khusus. Pada Windows, utas ini berjalan pada
THREAD_PRIORITY_HIGHESTtingkat prioritas.Tumpukan dan utas khusus untuk melakukan pengumpulan sampah disediakan untuk setiap CPU logis, dan tumpukan dikumpulkan pada saat yang sama. Setiap timbunan berisi timbunan objek kecil dan timbunan objek besar, dan semua timbunan dapat diakses oleh kode pengguna. Objek pada timbunan yang berbeda dapat merujuk satu sama lain.
Karena beberapa utas pengumpulan sampah bekerja bersama, pengumpulan sampah pada server lebih cepat dibandingkan pengumpulan sampah pada workstation dengan tumpukan berukuran sama.
Pengumpulan sampah server sering memiliki segmen ukuran yang lebih besar. Namun, ini hanya generalisasi: ukuran segmen khusus implementasi dan dapat berubah. Jangan membuat asumsi tentang ukuran segmen yang dialokasikan oleh pengumpul sampah saat menyetel aplikasi Anda.
Pengumpulan sampah di server dapat menghabiskan banyak sumber daya. Misalnya, bayangkan bahwa ada 12 proses yang menggunakan GC server yang berjalan di komputer yang memiliki empat CPU logis. Jika semua proses berkumpul untuk mengumpulkan sampah pada waktu yang sama, mereka akan saling menginterferensi, karena ada 12 utas yang dijadwalkan pada CPU logis yang sama. Jika proses aktif, bukan ide yang baik untuk meminta mereka semua menggunakan GC server.
Jika Anda menjalankan ratusan instans aplikasi, pertimbangkan untuk menggunakan pengumpulan sampah stasiun kerja dengan pengumpulan sampah bersamaan dinonaktifkan. Ini akan mengakibatkan peralihan konteks yang lebih sedikit, yang dapat meningkatkan performa.