我同意,gc 产生的目的,就是把程序员从手动申请、释放内存中解脱出来。毕竟是人就会犯错,就算经验再丰富,也免不了犯错。更别提软件规模越来越大,别人的代码有没有内存管理的错误就更难看出来了。
比如 jvm、.net、go,以及脚本语言,都不需要动脑筋来管理内存。garbage collector 来负责内存管理,程序员没机会接触内存的申请和释放。
而很多支持引用计数的语言,比如 delphi、swift、rust,如果用了引用计数的机制,那你就得自己琢磨哪里该用 weak reference,不然就内存泄露给你看。
在这个语境下的 gc 就非常有用了,有没有 gc 意味着需不需要关心内存管理。有的话采用哪种策略,是不是 stop-the-world,发生回收时会不会产生高延迟?没有的话,那么用的是哪种方式来管理,原始的手工管理,还是 arc,或是又发明了一套 ownership 的概念?
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: // 不是反驳你,我是不想回复在另几个id下面,哈哈
: 引用计数属于一种GC算法,比如Perl解释器的GC实现就用的引用计数。
: 说带GC的语言自然是指语法层面不需要手动管理内存,这多简单的定义。
: ...................
--
修改:eGust FROM 115.188.151.*
FROM 115.188.151.*