MST

星途 面试题库

面试题:Go中Goroutine与线程在资源占用上的基础差异

请简要阐述Go语言中Goroutine与传统线程在资源占用方面的主要区别。例如,从内存占用、创建开销等角度分析。
11.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

内存占用

  • Goroutine:非常轻量级,初始栈大小通常仅为2KB左右,且栈空间可根据需要动态伸缩,在大量并发场景下,整体内存占用远低于传统线程。例如,创建10万个Goroutine,相比创建同样数量的传统线程,内存占用会少很多。
  • 传统线程:每个线程的栈大小通常固定且较大,一般在数MB级别(如Windows下默认为1MB),大量线程创建时,内存占用会迅速增长,容易导致内存耗尽问题。

创建开销

  • Goroutine:创建开销极小,创建速度极快。在Go语言中通过go关键字就能轻松创建一个Goroutine,在高并发场景下可快速创建大量Goroutine而不会带来显著性能影响。例如,每秒可创建数万个Goroutine。
  • 传统线程:创建开销相对较大,涉及操作系统内核资源分配等复杂操作,创建速度较慢。在高并发场景下,创建大量传统线程会导致性能瓶颈。