garbage collector и управление памятью в go
DESCRIPTION
Доклад от Ростислава Дзинько про выделение и освобождение памяти в стеке и "куче". Работа с памятью при взаимодействии с кодом, написанном на C.TRANSCRIPT
Go:memoryРостислав Дзінько
About me● Software Architect @ ZeoAlliance● Interests: Python / C / C++ / Go / D● Made Video Course
MemoryDiffers
Heap & Frame & Stack
Heap = GC Function Frame
Goroutine Stack
Go memory
Everything is passed by valuePointers & Values
Pointer & Value
Value
Pointer
Passing Slices are tricky
Values
intfloatboolstruct...
Pointers
*int*float*bool*struct...
Values
Slices
Capacity: unappreciated Slices still tricky
Structs are aligned Фікус-Пікус
Where to allocate?
Heap vs Stack
-mgo tool 6g -m src/gomemory/main.go
Inlining = faster
Inlining: Switch vs If
Local Frame Stack
Escape to Heap
Move to Heap
WTF?
Goroutine Stack
Contiguous vs Fragment
Go 1.2 Go 1.3
Evolution
Stack Growth
Stack Growth=
Reallocate+
Copy
but
Lock-Free!
AVOID
Getting Statistics runtime.MemStats
Heap
Stack
General
Go:new vs C:malloc
A bit of C
C:malloc vs Go:new
Questions?
Thank You for Attention