Meskipun saya benar-benar memahami implikasi serius dari bermain-main dengan fungsi ini (atau setidaknya itulah yang saya pikirkan), saya gagal untuk memahami mengapa itu menjadi salah satu hal yang tidak akan pernah digunakan oleh programmer terhormat, bahkan mereka yang bahkan tidak tahu. untuk apa ini.
Katakanlah saya sedang mengembangkan aplikasi di mana penggunaan memori sangat bervariasi tergantung pada apa yang dilakukan pengguna. Siklus hidup aplikasi dapat dibagi menjadi dua tahap utama: pengeditan dan pemrosesan waktu nyata. Selama tahap pengeditan, anggaplah miliaran atau bahkan triliunan objek tercipta; beberapa dari mereka kecil dan beberapa tidak, beberapa mungkin memiliki finalizer dan beberapa mungkin tidak, dan anggap masa hidup mereka bervariasi dari beberapa milidetik hingga berjam-jam. Selanjutnya, pengguna memutuskan untuk beralih ke tahap waktu nyata. Pada titik ini, anggaplah bahwa kinerja memainkan peran fundamental dan perubahan sekecil apa pun dalam aliran program dapat membawa konsekuensi bencana. Pembuatan objek kemudian dikurangi seminimal mungkin dengan menggunakan kumpulan objek dan semacamnya tetapi kemudian, GC berbunyi secara tak terduga dan membuang semuanya, dan seseorang mati.
Pertanyaannya: Dalam hal ini, bukankah bijaksana untuk memanggil GC.Collect () sebelum memasuki tahap kedua?
Bagaimanapun, kedua tahap ini tidak pernah tumpang tindih dalam waktu satu sama lain dan semua pengoptimalan dan statistik yang bisa dikumpulkan oleh GC akan sedikit berguna di sini ...
Catatan: Seperti yang telah Anda tunjukkan, .NET mungkin bukan platform terbaik untuk aplikasi seperti ini, tetapi itu di luar cakupan pertanyaan ini. Tujuannya adalah untuk memperjelas apakah panggilan GC.Collect () bisa meningkatkan perilaku / kinerja aplikasi secara keseluruhan atau tidak. Kita semua setuju bahwa keadaan di mana Anda akan melakukan hal seperti itu sangat jarang, tetapi sekali lagi, GC mencoba untuk menebak dan melakukannya dengan sangat baik hampir sepanjang waktu, tetapi ini masih tentang menebak.
Terima kasih.