面试题答案
一键面试内存占用
- Goroutine:非常轻量级,初始栈大小通常仅为2KB左右,且栈空间可根据需要动态伸缩,在大量并发场景下,整体内存占用远低于传统线程。例如,创建10万个Goroutine,相比创建同样数量的传统线程,内存占用会少很多。
- 传统线程:每个线程的栈大小通常固定且较大,一般在数MB级别(如Windows下默认为1MB),大量线程创建时,内存占用会迅速增长,容易导致内存耗尽问题。
创建开销
- Goroutine:创建开销极小,创建速度极快。在Go语言中通过
go
关键字就能轻松创建一个Goroutine,在高并发场景下可快速创建大量Goroutine而不会带来显著性能影响。例如,每秒可创建数万个Goroutine。 - 传统线程:创建开销相对较大,涉及操作系统内核资源分配等复杂操作,创建速度较慢。在高并发场景下,创建大量传统线程会导致性能瓶颈。