26-05-2025, 08:50 AM
یکی از **ویژگیهای اصلی** زبان **C#** که به **مدیریت حافظه** کمک میکند، ****سیستم جمعآوری زباله (Garbage Collection - GC)** است.
### **چگونه Garbage Collection در C# کار میکند؟**
1. **تخصیص خودکار حافظه:**
- وقتی یک شیء (object) در C# ساخته میشود، حافظه بهصورت خودکار در **هیپ مدیریتشده (Managed Heap)** تخصیص مییابد.
2. **شناسایی اشیاء بیاستفاده:**
- **GC** بهصورت دورهای اجرا میشود و اشیایی که **دیگر مورد ارجاع نیستند** (یعنی هیچ Reference فعالی به آنها وجود ندارد) را شناسایی میکند.
3. **آزادسازی حافظه:**
- حافظهٔ اشیاء بیاستفاده را آزاد میکند و فضای هیپ را بهینهسازی مینماید.
4. **جلوگیری از نشت حافظه (Memory Leak):**
- با این مکانیسم، نیاز به آزادسازی دستی حافظه (مثل `delete` در ++C) از بین میرود و احتمال خطاهای انسانی کاهش مییابد.
### **مزایای Garbage Collection در C#:**
✅ کاهش خطاهای مدیریت حافظه دستی
✅ بهبود امنیت و پایداری برنامه
✅ افزایش بهرهوری توسعهدهنده
### **نکات تکمیلی:**
- در موارد خاص (مثل کار با منابع غیرمدیریتشده مانند فایلها یا اتصالات شبکه)، میتوان از **`IDisposable`** و **`using`** برای آزادسازی بهینهتر منابع استفاده کرد.
- **GC** در **پلتفرم .NET** بهصورت بهینهسازی شده کار میکند و نسخههای جدید (مثل .NET 8) بهبودهای عملکردی قابل توجهی داشتهاند.
اگر به دنبال **مدیریت حرفهایتر حافظه** هستید، میتوانید از **WeakReference** یا **Memory Management API** در .NET نیز استفاده کنید.
✌️ بهطور خلاصه، **Garbage Collection** یکی از قویترین مکانیزمهای C# برای مدیریت خودکار حافظه است که توسعه برنامههای ایمن و پایدار را تسهیل میکند.
### **چگونه Garbage Collection در C# کار میکند؟**
1. **تخصیص خودکار حافظه:**
- وقتی یک شیء (object) در C# ساخته میشود، حافظه بهصورت خودکار در **هیپ مدیریتشده (Managed Heap)** تخصیص مییابد.
2. **شناسایی اشیاء بیاستفاده:**
- **GC** بهصورت دورهای اجرا میشود و اشیایی که **دیگر مورد ارجاع نیستند** (یعنی هیچ Reference فعالی به آنها وجود ندارد) را شناسایی میکند.
3. **آزادسازی حافظه:**
- حافظهٔ اشیاء بیاستفاده را آزاد میکند و فضای هیپ را بهینهسازی مینماید.
4. **جلوگیری از نشت حافظه (Memory Leak):**
- با این مکانیسم، نیاز به آزادسازی دستی حافظه (مثل `delete` در ++C) از بین میرود و احتمال خطاهای انسانی کاهش مییابد.
### **مزایای Garbage Collection در C#:**
✅ کاهش خطاهای مدیریت حافظه دستی
✅ بهبود امنیت و پایداری برنامه
✅ افزایش بهرهوری توسعهدهنده
### **نکات تکمیلی:**
- در موارد خاص (مثل کار با منابع غیرمدیریتشده مانند فایلها یا اتصالات شبکه)، میتوان از **`IDisposable`** و **`using`** برای آزادسازی بهینهتر منابع استفاده کرد.
- **GC** در **پلتفرم .NET** بهصورت بهینهسازی شده کار میکند و نسخههای جدید (مثل .NET 8) بهبودهای عملکردی قابل توجهی داشتهاند.
اگر به دنبال **مدیریت حرفهایتر حافظه** هستید، میتوانید از **WeakReference** یا **Memory Management API** در .NET نیز استفاده کنید.
✌️ بهطور خلاصه، **Garbage Collection** یکی از قویترین مکانیزمهای C# برای مدیریت خودکار حافظه است که توسعه برنامههای ایمن و پایدار را تسهیل میکند.