إذا كان الكائن الذي تم إنهاؤه موجودًا في الذاكرة ولم يتم استخدامه، فسوف يشغل الكثير من موارد النظام، لذلك سيضعه جامع البيانات المهملة .net في قائمة انتظار الإجهاض بمجرد أن يحين الوقت المناسب، سيتم إيقاظ الكائن واستدعاءه ومع ذلك، باستخدام هذه الآلية، يمكنك وضع الفئة العملاقة المستهلكة للموارد في تجمع كائنات وإعادة استخدامها طوال عمر البرنامج بالكامل (علامة النهاية هي أن clr يعتقد أنه لا يوجد جذر في عملية لهذا التطبيق). نحن نسمي هذه الفئات العملاقة بالكائنات باهظة الثمن، فلنناقش بنية تجمع الكائنات الذي يدير الكائنات باهظة الثمن.
فئة باهظة الثمن {
تجمع المكدس الثابت = مكدس جديد () ؛
public static Expensive GetObjectFromPool(){
Retun (باهظ الثمن)pool.Pop()
}
public static void ShutdownThePool(){
Pool = null
}
Public Expensive(){
// قم ببناء الكائن
Pool.push(this) أولاً
}
Finalize (){
If(pool!=null){
GC.RegisterForFinally(this;) // أيقظه أولاً واقتله
Pool.push(this); // أضف الكائن "المستيقظ" إلى تجمع الكائنات وأعده إلى الحياة
}
}
}
Class app{
Static void main(){
جديد مكلف ()
......
Expensive e = GetObjectFromPool();
// يمكنك استخدام e أدناه.
Expensive.shutdownThepool();// قبل إغلاق التطبيق، أغلق تجمع الكائنات، وإلا فإنه سيترك "ثغرة" في الذاكرة، لأنه تمت إعادة كتابة اللمسات النهائية
}
}