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.
Dalam pengumpulan sampah latar belakang (GC), generasi sementara (0 dan 1) dikumpulkan sesuai kebutuhan saat pengumpulan generasi 2 sedang berlangsung. Pengumpulan sampah latar belakang dilakukan pada satu atau beberapa utas khusus, tergantung pada apakah itu workstation atau server GC, dan hanya berlaku untuk koleksi generasi 2.
Pengumpulan sampah latar belakang diaktifkan secara default. Ini dapat diaktifkan atau dinonaktifkan dengan pengaturan konfigurasi gcConcurrent di aplikasi .NET Framework atau pengaturan System.GC.Concurrent di aplikasi .NET Core dan .NET 5 dan yang lebih baru.
Nota
Pengumpulan sampah latar belakang menggantikan pengumpulan sampah bersamaan dan tersedia dalam .NET Framework 4 dan versi yang lebih baru. Di .NET Framework 4, hanya didukung untuk pengumpulan sampah stasiun kerja . Dimulai dengan .NET Framework 4.5, pengumpulan sampah latar belakang tersedia untuk pengumpulan sampah di workstation dan server.
Koleksi pada generasi yang singkat selama pengumpulan sampah latar belakang dikenal sebagai pengumpulan sampah utama. Ketika pengumpulan sampah di latar depan terjadi, semua utas terkelola ditangguhkan.
Ketika pengumpulan sampah latar belakang sedang berlangsung dan Anda telah mengalokasikan cukup objek di generasi 0, CLR melakukan pengumpulan sampah latar depan generasi 0 atau generasi 1. Thread khusus untuk pengumpulan sampah latar belakang secara berkala memeriksa pada titik aman untuk menentukan apakah terdapat permintaan pengumpulan sampah pada latar depan. Jika ada, koleksi latar belakang menangguhkan dirinya sendiri sehingga pengumpulan sampah latar depan dapat terjadi. Setelah pengumpulan sampah latar depan selesai, utas pengumpulan sampah latar belakang khusus dan utas pengguna dilanjutkan.
Pengumpulan sampah latar belakang menghilangkan pembatasan alokasi yang diberlakukan oleh pengumpulan sampah bersamaan, karena pengumpulan sampah sementara dapat terjadi selama pengumpulan sampah latar belakang. Pengumpulan sampah di latar belakang dapat menghapus objek mati pada generasi sementara. Ini juga dapat memperluas tumpukan jika diperlukan selama pengumpulan sampah generasi 1.
Stasiun kerja latar belakang vs. server GC
Dimulai dengan .NET Framework 4.5, pengumpulan sampah latar belakang tersedia untuk server GC. Background GC adalah mode default untuk pengumpulan sampah server.
Fungsi pengumpulan sampah server latar belakang mirip dengan pengumpulan sampah stasiun kerja latar belakang, tetapi ada beberapa perbedaan:
Pengumpulan sampah stasiun kerja latar belakang menggunakan satu utas pengumpulan sampah latar belakang khusus, sedangkan pengumpulan sampah server latar belakang menggunakan beberapa utas. Biasanya, terdapat thread khusus untuk setiap prosesor logis.
Tidak seperti utas pengumpulan sampah latar belakang stasiun kerja, utas GC server latar belakang tidak kehabisan waktu.
Ilustrasi berikut menunjukkan pengumpulan sampah stasiun kerja latar belakang yang dilakukan pada utas khusus terpisah:
Ilustrasi berikut menunjukkan pengumpulan sampah latar belakang server yang dijalankan pada utas khusus terpisah.
Pengumpulan sampah bersamaan
Petunjuk / Saran
Bagian ini berlaku untuk:
- .NET Framework 3.5 dan yang lebih lama untuk pengumpulan sampah stasiun kerja
- .NET Framework 4 dan versi sebelumnya untuk server pengumpulan sampah
Pengumpulan sampah secara bersamaan digantikan dengan pengumpulan sampah latar belakang dalam versi yang lebih baru.
Dalam pengumpulan sampah workstation atau server, Anda dapat mengaktifkan pengumpulan sampah secara bersamaan, yang memungkinkan utas untuk berjalan secara bersamaan dengan utas khusus yang melakukan pengumpulan sampah selama sebagian besar durasi pengumpulan. Opsi ini hanya memengaruhi pengumpulan sampah di generasi 2; generasi 0 dan 1 selalu bersifat tidak bersamaan karena selesai dengan cepat.
Pengumpulan sampah bersamaan memungkinkan aplikasi interaktif menjadi lebih responsif dengan meminimalkan jeda untuk koleksi. Thread yang dikelola dapat terus berjalan sebagian besar waktunya saat thread pengumpulan sampah bersamaan berjalan. Desain ini menghasilkan jeda yang lebih pendek saat pengumpulan sampah terjadi.
Pengumpulan sampah bersamaan dilakukan pada utas terpisah. Secara default, CLR menjalankan pengumpulan sampah stasiun kerja dengan pengumpulan sampah bersamaan yang diaktifkan pada komputer prosesor tunggal dan multi-prosesor.
Ilustrasi berikut menunjukkan pengumpulan sampah secara bersamaan yang dilakukan pada utas khusus yang terpisah.