یک Variable در Go روی Stack میرود یا Heap؟ Compiler تصمیم میگیرد
یکی از مفاهیم مهم Performance در Go، Escape Analysis است.
در Compiler بررسی میکند آیا عمر یک Variable فقط داخل همان Function است یا Reference آن جایی خارج از Scope باقی میماند.
اگر بتواند روی Stack قرار بگیرد:
Function Ends → Memory Automatically Reclaimed
اما اگر Escape کند:
Heap Allocation → GC Eventually Handles It
برای دیدن تصمیم Compiler میتوانید هنگام تحلیل پروژه از خروجی Escape Analysis استفاده کنید:
go build -gcflags="-m" ./...
📌 اما هدف این نیست که «هر Heap Allocation بد است».
موارد Stack vs Heap را به Micro-Optimization تبدیل نکنید.
کانال آموزشی کدنایت | آموزش برنامه نویسی
https://t.me/codenight_ir
https://t.me/codenight_ir
Post #110
239
- ❤ 2
- 💩 1