TGViewer
Gopher Academy Gopher Academy @gopher_academy · 3.85K subscribers
Post #4284 379
Gopher Academy 📌 Memory Allocation in Go ❌این پست اپدیت می‌شود ❌ 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go می‌پردازیم. درک درست از ساختار حافظه به شما کمک می‌کند عملکرد برنامه‌هایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction…
این بخش به ساختار Span Set در مدیریت حافظه‌ی Go می‌پردازد. در واقع توضیح می‌دهد چطور runtime با کارایی بالا مجموعه‌ای از spanها را سازمان‌دهی می‌کند. خلاصه‌ی دقیق و نکات کلیدی 👇


📘 Span Set در Go Runtime

🔹 برای مدیریت بهتر spanها، Go از ساختاری به نام Span Set استفاده می‌کند.
🔹 هر Span Set شامل مجموعه‌ای از mspan**‌هایی است که همگی متعلق به **یک Span Class مشخص هستند


🧩 ساختار درونی Span Set

* از نظر فنی، Span Set یک slice از آرایه‌ها است.
* اندازه‌ی هر آرایه 512 خانه دارد.
* هر خانه شامل یک mspan object است (ممکن است null باشد).

* سلول‌های بنفش → mspan معتبر (non-null)
* سلول‌های سفید → تهی (null)

⚙️ عملیات (Push / Pop)

* دو متغیر کلیدی دارد: head و tail

* head → اولین span معتبر (برای pop)
* tail → آخرین span معتبر (برای push)

* هنگام pop از head شروع می‌کند (بالا به پایین، چپ به راست).
* هنگام push از tail ادامه می‌دهد (بالا به پایین، چپ به راست).
* اگر آرایه‌ای خالی شود، حذف شده و به pool آزاد برای استفاده‌ی آینده برگردانده می‌شود.


🧵 هم‌زمانی (Concurrency)

* متغیرهای head و tail atomic هستند.
* به همین دلیل، چند goroutine می‌توانند هم‌زمان span اضافه یا حذف کنند
بدون نیاز به قفل (lock).

---

✅ خلاصه:
اSpan Set در Go ابزاری کارآمد برای نگهداری و مدیریت هم‌زمان مجموعه‌ای از spanهاست.
این ساختار ساده اما قدرتمند، به runtime اجازه می‌دهد تا مدیریت حافظه را سریع، بدون قفل و با حداقل سربار انجام دهد.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
  • 🍾 1
  • 💋 1
More from @gopher_academy
  1. Sep 29, 2026📢 معرفی اپ «نویسنده تاریخ و مبلغ چک» موقع نوشتن چک، تاریخ و مبلغ را با حروف نوشتن وقت می‌…
  2. Sep 29, 2026🔵 عنوان مقاله How Do You Add a New Keyword to Go? (For Sum Types) 🟢 خلاصه مقاله: در زبان…
  3. Sep 28, 2026🔵 عنوان مقاله The First Official TinyGo Hardware 'Starter Kit' 🟢 خلاصه مقاله: در دنیای ف…
  4. Sep 28, 2026🔵 عنوان مقاله Is Go's FIPS 140 Code Bloating Your Binaries? 🟢 خلاصه مقاله: در دنیای فناو…
  5. Sep 28, 2026🔵 عنوان مقاله design for sum types 🟢 خلاصه مقاله: طراحی انواع جمع (Sum Types) در حال حاض…
  6. Sep 28, 2026🔵 عنوان مقاله Hister: A Go-Powered Search Engine for Your Own Stuff 🟢 خلاصه مقاله: در دن…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →