garbage collector и управление памятью в go
DESCRIPTION
Доклад от Ростислава Дзинько про выделение и освобождение памяти в стеке и "куче". Работа с памятью при взаимодействии с кодом, написанном на C.TRANSCRIPT
![Page 1: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/1.jpg)
Go:memoryРостислав Дзінько
![Page 2: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/2.jpg)
About me● Software Architect @ ZeoAlliance● Interests: Python / C / C++ / Go / D● Made Video Course
![Page 3: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/3.jpg)
MemoryDiffers
![Page 4: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/4.jpg)
Heap & Frame & Stack
Heap = GC Function Frame
Goroutine Stack
Go memory
![Page 5: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/5.jpg)
Everything is passed by valuePointers & Values
![Page 6: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/6.jpg)
Pointer & Value
Value
Pointer
![Page 7: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/7.jpg)
Passing Slices are tricky
Values
intfloatboolstruct...
Pointers
*int*float*bool*struct...
Values
Slices
![Page 8: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/8.jpg)
Capacity: unappreciated Slices still tricky
![Page 9: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/9.jpg)
Structs are aligned Фікус-Пікус
![Page 10: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/10.jpg)
Where to allocate?
Heap vs Stack
![Page 11: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/11.jpg)
-mgo tool 6g -m src/gomemory/main.go
![Page 12: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/12.jpg)
Inlining = faster
![Page 13: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/13.jpg)
Inlining: Switch vs If
![Page 14: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/14.jpg)
Local Frame Stack
![Page 15: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/15.jpg)
Escape to Heap
![Page 16: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/16.jpg)
Move to Heap
![Page 17: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/17.jpg)
WTF?
Goroutine Stack
![Page 18: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/18.jpg)
Contiguous vs Fragment
Go 1.2 Go 1.3
Evolution
![Page 19: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/19.jpg)
Stack Growth
Stack Growth=
Reallocate+
Copy
but
Lock-Free!
AVOID
![Page 20: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/20.jpg)
Getting Statistics runtime.MemStats
Heap
Stack
General
![Page 21: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/21.jpg)
Go:new vs C:malloc
A bit of C
![Page 22: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/22.jpg)
C:malloc vs Go:new
![Page 23: Garbage collector и управление памятью в Go](https://reader034.vdocuments.net/reader034/viewer/2022052218/554a10f0b4c90507558b4cc6/html5/thumbnails/23.jpg)
Questions?
Thank You for Attention