Garbage collector и управление памятью в Go

Post on 06-May-2015

536 views 3 download

description

Доклад от Ростислава Дзинько про выделение и освобождение памяти в стеке и "куче". Работа с памятью при взаимодействии с кодом, написанном на C.

Transcript of Garbage collector и управление памятью в Go

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