Go

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģ

Stack vs heap, escape analysis, garbage collector, āļāļēāļĢāļ—āļģ memory profiling, pprof, memory leaks

24 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒÂ·
Senior
1

āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļŦāļĨāļąāļāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļˆāļąāļ”āļŠāļĢāļĢāļšāļ™ stack āđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļŠāļĢāļĢāļšāļ™ heap āđƒāļ™ Go āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

stack āļ–āļđāļāļˆāļąāļ”āļāļēāļĢāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļŠāļĢāļĢāļ—āļģāđ„āļ”āđ‰āļĢāļ§āļ”āđ€āļĢāđ‡āļ§āļĄāļēāļ (āđ€āļžāļĩāļĒāļ‡āđāļ„āđˆāļ‚āļĒāļąāļš stack pointer) āļ•āļąāļ§āđāļ›āļĢāļšāļ™ stack āļˆāļ°āļ–āļđāļāļ„āļ·āļ™āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāđ€āļĄāļ·āđˆāļ­āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ return āļŠāđˆāļ§āļ™ heap āļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰ garbage collector āđƒāļ™āļāļēāļĢāļ„āļ·āļ™āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļŠāļĢāļĢāļŠāđ‰āļēāļāļ§āđˆāļēāđ€āļžāļĢāļēāļ°āđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļš Go runtime āļ•āļąāļ§āđāļ›āļĢāļ—āļĩāđˆāļĒāļąāļ‡āļ„āļ‡āļ­āļĒāļđāđˆāļŦāļĨāļąāļ‡āļˆāļšāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļŦāļĢāļ·āļ­āļĄāļĩāļ‚āļ™āļēāļ”āļ—āļĩāđˆāđ„āļĄāđˆāļ—āļĢāļēāļšāđƒāļ™āđ€āļ§āļĨāļēāļ„āļ­āļĄāđ„āļžāļĨāđŒāļˆāļ°āđ„āļ›āļ­āļĒāļđāđˆāļšāļ™ heap

2

escape analysis āđƒāļ™ Go āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

escape analysis āļ„āļ·āļ­āļāļēāļĢāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāđāļšāļšāļŠāđāļ•āļ•āļīāļāļ—āļĩāđˆāļ„āļ­āļĄāđ„āļžāđ€āļĨāļ­āļĢāđŒ Go āļ—āļģāđ€āļžāļ·āđˆāļ­āļ•āļąāļ”āļŠāļīāļ™āļ§āđˆāļēāļ•āļąāļ§āđāļ›āļĢāļŠāļēāļĄāļēāļĢāļ–āļ­āļĒāļđāđˆāļšāļ™ stack āđ„āļ”āđ‰āļŦāļĢāļ·āļ­āļ•āđ‰āļ­āļ‡āļˆāļąāļ”āļŠāļĢāļĢāļšāļ™ heap āļŦāļēāļāļ„āļ­āļĄāđ„āļžāđ€āļĨāļ­āļĢāđŒāļ•āļĢāļ§āļˆāļžāļšāļ§āđˆāļēāļ•āļąāļ§āđāļ›āļĢāļ–āļđāļāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļ™āļ­āļāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļĄāļąāļ™ (āļœāđˆāļēāļ™āļžāļ­āļĒāļ™āđŒāđ€āļ•āļ­āļĢāđŒāļ—āļĩāđˆāļŠāđˆāļ‡āļ„āļ·āļ™ āļāļēāļĢāđ€āļāđ‡āļšāđƒāļ™āļ•āļąāļ§āđāļ›āļĢ global āļŊāļĨāļŊ) āļ•āļąāļ§āđāļ›āļĢāļ™āļąāđ‰āļ™āļˆāļ° 'escape' āđāļĨāļ°āļ–āļđāļāļˆāļąāļ”āļŠāļĢāļĢāļšāļ™ heap āļāļēāļĢāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļ™āļĩāđ‰āļŠāđˆāļ§āļĒāļ›āļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļŠāļĢāļĢāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī

3

āļˆāļ°āļ”āļđāļœāļĨāļĨāļąāļžāļ˜āđŒāļ‚āļ­āļ‡ escape analysis āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļ„āļ­āļĄāđ„āļžāļĨāđŒāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

āđāļŸāļĨāđ‡āļ -gcflags=-m āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļ”āļđāļāļēāļĢāļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāļ‚āļ­āļ‡ escape analysis āđ„āļ”āđ‰ āļāļēāļĢāđƒāļŠāđ‰ -m=2 āļŦāļĢāļ·āļ­ -m=3 āļˆāļ°āđƒāļŦāđ‰āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļĄāļēāļāļ‚āļķāđ‰āļ™āļ§āđˆāļēāļ—āļģāđ„āļĄāļ•āļąāļ§āđāļ›āļĢāļ–āļķāļ‡ escape āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ€āļŠāđˆāļ™ 'go build -gcflags=-m=2' āļˆāļ°āđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ€āļŠāđˆāļ™ 'moved to heap: x' āđ€āļžāļ·āđˆāļ­āļšāđˆāļ‡āļšāļ­āļāļ§āđˆāļēāļ•āļąāļ§āđāļ›āļĢāļ–āļđāļāļĒāđ‰āļēāļĒāđ„āļ›āļĒāļąāļ‡ heap āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ™āļĩāđ‰āļˆāļģāđ€āļ›āđ‡āļ™āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļŠāļĢāļĢāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđƒāļ™āđ‚āļ„āđ‰āļ”āļ—āļĩāđˆāļŠāļģāļ„āļąāļāđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄ

4

āđƒāļ™āļāļĢāļ“āļĩāđƒāļ”āļ—āļĩāđˆāļ•āļąāļ§āđāļ›āļĢ local āļˆāļ° escape āđ„āļ›āļĒāļąāļ‡ heap?

5

āļšāļ—āļšāļēāļ—āļŦāļĨāļąāļāļ‚āļ­āļ‡ garbage collector āđƒāļ™ Go āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

+21 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļŦāļąāļ§āļ‚āđ‰āļ­āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Go āļ­āļ·āđˆāļ™āđ†

āļžāļ·āđ‰āļ™āļāļēāļ™ Go

Junior
25 āļ„āļģāļ–āļēāļĄ

āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ Go

Junior
20 āļ„āļģāļ–āļēāļĄ

āļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāđ€āļŸāļ‹āđƒāļ™ Go

Junior
18 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

Junior
20 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ Goroutine

Junior
20 āļ„āļģāļ–āļēāļĄ

Channels

Junior
22 āļ„āļģāļ–āļēāļĄ

Go Modules

Mid-Level
18 āļ„āļģāļ–āļēāļĄ

āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ HTTP

Mid-Level
24 āļ„āļģāļ–āļēāļĄ

āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ HTTP

Mid-Level
18 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠ JSON

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

Database/SQL

Mid-Level
22 āļ„āļģāļ–āļēāļĄ

āđāļžāđ‡āļāđ€āļāļˆ context

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

Testing

Mid-Level
22 āļ„āļģāļ–āļēāļĄ

āļĢāļđāļ›āđāļšāļš Concurrency

Mid-Level
24 āļ„āļģāļ–āļēāļĄ

āđ„āļžāļĢāļĄāļīāļ—āļĩāļŸāļāļēāļĢāļ‹āļīāļ‡āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ

Mid-Level
22 āļ„āļģāļ–āļēāļĄ

āđ€āļŸāļĢāļĄāđ€āļ§āļīāļĢāđŒāļāđ€āļ§āđ‡āļš Go

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ­āļ­āļāđāļšāļš REST API

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

gRPC

Mid-Level
22 āļ„āļģāļ–āļēāļĄ

Reflection

Senior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļāļēāļĢāļ—āļģāļ‡āļēāļ™

Senior
22 āļ„āļģāļ–āļēāļĄ

Generics

Senior
20 āļ„āļģāļ–āļēāļĄ

Go Design Patterns

Senior
24 āļ„āļģāļ–āļēāļĄ

Microservices

Senior
24 āļ„āļģāļ–āļēāļĄ

āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļĒāļ·āļ™āļĒāļąāļ™āļ•āļąāļ§āļ•āļ™

Senior
24 āļ„āļģāļ–āļēāļĄ

Docker & Containerization

Senior
20 āļ„āļģāļ–āļēāļĄ

Kubernetes Basics

Senior
22 āļ„āļģāļ–āļēāļĄ

Go āļ‚āļąāđ‰āļ™āļŠāļđāļ‡

Senior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļžāļąāļ’āļ™āļē CLI

Senior
20 āļ„āļģāļ–āļēāļĄ

āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ Go āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ„āļĢāļąāđ‰āļ‡āļ–āļąāļ”āđ„āļ›

āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ„āļģāļ–āļēāļĄāļ—āļąāđ‰āļ‡āļŦāļĄāļ” flashcards āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„ āđāļšāļšāļāļķāļāļŦāļąāļ” code review āđāļĨāļ°āļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āđ€āļĢāļīāđˆāļĄāđƒāļŠāđ‰āļŸāļĢāļĩ