奇思妙想 · 2025年 1月 5日 0

不同编程语言的内存管理

17 次浏览

越靠近硬件的编程语言倾向于让程序员控制内存,越高级的语言倾向于用GC控制内存。

  • C/C++完全需要程序员控制内存,C++还提供智能指针以实现RAII机制.
  • ObjC 提供了引用计数和ARC方式。
  • Java/C#/Python 等编程语言提供GC,不需要程序员显式控制内存申请和释放。
    • 但需要注意,如果申请的是系统核心资源(例如信号量、互斥体等),GC无法得知何时释放,它们必须由程序员控制释放。
  • Swift 继承ObjC ARC, 也采用ARC引用计数控制内存管理,不像GC更消耗资源,也具备一定的性能优势,是很优秀的实现方式。
  • Rust 堆内存采用智能指针。

内存分配器

  • Rust 编译器使用jemalloc.