Jika objek yang dihentikan berada di memori dan tidak digunakan, objek tersebut akan menghabiskan banyak sumber daya sistem, sehingga pengumpul sampah .net akan memasukkannya ke dalam antrian pembatalan. Setelah waktunya tepat, objek tersebut akan dibangunkan dan dipanggil metode finalisasi untuk menghentikannya sepenuhnya. Namun, dengan menggunakan mekanisme ini, Anda dapat menempatkan kelas raksasa yang memakan sumber daya ke dalam kumpulan objek dan menggunakannya kembali sepanjang masa program (tanda akhirnya adalah clr menganggap tidak ada root di program tersebut. proses untuk aplikasi itu). Kita menyebut kelas raksasa ini sebagai Objek Mahal. Mari kita bahas struktur kumpulan objek yang mengelola Objek Mahal.
Kelas Mahal{
Kumpulan Tumpukan Statis = Tumpukan baru();
GetObjectFromPool() mahal statis publik(){
Retun (Mahal) pool.Pop()
}
Public static void ShutdownThePool(){
Pool = null;
Public
Expensive(){
//Bangun objek
Pool.push(this) terlebih dahulu;
Finalisasi
(){
If(pool!=null){
GC.RegisterForFinally(this;) / /Pertama, bangunkan dia dan bunuh dia
Pool.push(ini); //Tambahkan objek "terjaga" ke kumpulan objek dan hidupkan kembali
}
}
}
Aplikasi kelas{
Static void main(){
New mahal();
......
Mahal e = Mahal.
//Anda dapat menggunakan e di bawah.Expensive.shutdownThepool
();//Sebelum menutup aplikasi, tutup objek pool, jika tidak maka akan meninggalkan "lubang" di memori, karena Finalize telah ditulis ulang
}
}