🔹 Go’s View of Virtual Memory
یک برنامه Go در اصل یک پردازش فضای کاربر (user-space process) است و همان چیدمان استاندارد حافظه مجازی (Stack, Heap, BSS, Data) را دارد.
در Stack، Go از استک خاصی به نام g0 stack استفاده میکند که به نخ اصلی runtime (m0) متصل است.
متغیرهای global که مقدار اولیه دارند در بخش Data ذخیره میشوند، و متغیرهای global بدون مقدار اولیه در بخش BSS قرار میگیرند.
بر خلاف زبانهای سنتی مثل C که از Heap زیر program break استفاده میکنند، Go این Heap سنتی را برای اشیای خود به کار نمیبرد.
به جای آن، Go برای تخصیص حافظه اشیای heap و استک گوروتینها از memory-mapped segments استفاده میکند.
از اینجا به بعد، وقتی از "heap" در Go صحبت میکنیم، منظور همان بخش memory-mapped است (و نه heap سنتی زیر program break).
👉 به زبان ساده: Go یک heap اختصاصی روی memory-mapped segments میسازد و مدیریت حافظه را خودش انجام میدهد، نه اینکه از heap پیشفرض سیستم عامل استفاده کند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Post #4232
658
Gopher Academy 📌 Memory Allocation in Go ❌این پست اپدیت میشود ❌ 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go میپردازیم. درک درست از ساختار حافظه به شما کمک میکند عملکرد برنامههایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction…

- 🔥 3
- ❤ 1
- 🍾 1