หากวัตถุที่สิ้นสุดอยู่ในหน่วยความจำและไม่ได้ใช้งาน มันจะกินทรัพยากรระบบจำนวนมาก ดังนั้นตัวรวบรวมขยะ .net จะใส่ไว้ในคิวการยกเลิก เมื่อถึงเวลาที่เหมาะสม วัตถุนั้นจะถูกปลุกให้ตื่น สรุปวิธีการเพื่อยุติมันอย่างสมบูรณ์ อย่างไรก็ตาม การใช้กลไกนี้ คุณสามารถใส่คลาสยักษ์ที่ใช้ทรัพยากรลงในกลุ่มอ็อบเจ็กต์และนำมาใช้ซ้ำได้ตลอดอายุการใช้งานของโปรแกรม (เครื่องหมายสิ้นสุดคือ clr คิดว่าไม่มีรูทใน กระบวนการสำหรับการสมัครนั้น) เราเรียกคลาสยักษ์เหล่านี้ว่า Expensive object เรามาหารือเกี่ยวกับโครงสร้างของกลุ่มวัตถุที่จัดการวัตถุราคาแพงกันดีกว่า
คลาสแพง {
Static Stack pool = new Stack ();
GetObjectFromPool ราคาแพงแบบสาธารณะ () {
Retun (แพง) pool.Pop ()
;
โมฆะสาธารณะแบบคงที่ ShutdownThePool(){
Pool = null;
}
Public Expensive(){
//สร้างวัตถุ
Pool.push(this) ก่อน;
}
จบ (){
If(pool!=null){
GC.RegisterForFinally(this;) / /ขั้นแรกปลุกเขาให้ตื่นแล้วฆ่าเขา
Pool.push(นี่); //เพิ่มวัตถุ "ตื่น" ลงในกลุ่มวัตถุและทำให้เขากลับมามีชีวิตอีกครั้ง
}
}
}
แอปคลาส {
Static void main(){
New comparison();
......
Expensive e = Expensiv. GetObjectFromPool();
// คุณสามารถใช้ e below.Expensive.shutdownThepool
();// ก่อนที่จะปิดแอปพลิเคชัน ปิดกลุ่มวัตถุ ไม่เช่นนั้นจะทิ้ง "รู" ไว้ในหน่วยความจำ เนื่องจาก Finalize ถูกเขียนใหม่
}
}