📌 Two spans with different size classes
🔹 هر Span در Go به یک Size Class خاص تعلق دارد. این Size Class مشخص میکند که:
* چند Page در Span قرار بگیرد
* هر Page چند Object را در خود جای دهد
📦 مثالها (تصویر بالا):
ا 1. Size Class 38
* اندازه هر شیء: 2048B
* یک Page (۸KB) دقیقاً ۴ تا شیء 2048B را جا میدهد.
* پس کل Span = ۱ Page + ۸ Object
ا 2. Size Class 55
* اندازه هر شیء: 10880B
* هر شیء بزرگتر از یک Page است.
* Span در اینجا روی ۴ Page گسترده میشود و ۳ Object را نگه میدارد.
🧩 Tail Waste (هدررفت انتهایی)
* دلیل اینکه برای Size Class 55 از ۴ Page استفاده میشود و نه ۲ Page، کاهش هدررفت حافظه است.
* اگر ۲ Page میگرفت → هدررفت = 5504B
* اگر ۴ Page بگیرد → هدررفت = 128B
* ✅ پس با استفاده از صفحات بیشتر، fragmentation به حداقل میرسد.
به زبان ساده:
ا Go با استفاده از Span Class و محاسبهی دقیق Tail Waste**، حافظه را به شکل بهینه تخصیص میدهد و از هدررفت جلوگیری میکند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Post #4261
620
Gopher Academy 📌 Memory Allocation in Go ❌این پست اپدیت میشود ❌ 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go میپردازیم. درک درست از ساختار حافظه به شما کمک میکند عملکرد برنامههایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction…

- 🏆 1