c# - 为什么其他语言没有类似 Java 垃圾收集器的自动垃圾收集?

标签 c# java c++ c garbage-collection

其他语言没有垃圾收集器的原因是什么?

为什么这些其他语言没有内置垃圾回收机制?为什么要赋予程序员收集的责任?

最佳答案

没有垃圾回收的原因:

  • 直到 1985 年至 1990 年左右,才开发出真正高效的收集器。在那之前设计的语言,如果以效率为目标,则没有垃圾收集。示例:Ada、C、Fortran、Modula-2、Pascal。

  • Bjarne Stroustrup 认为更好的语言设计是让每个成本都明确,并且“不要为你不使用的功能付费”。 (请参阅他在第二届和第三届 ACM session 上关于编程语言历史的论文。)因此 C++ 没有垃圾回收。

  • 一些研究语言使用其他想法(区域、奇特的类型系统)来显式、安全地管理内存。这些想法特别有希望解决诸如设备驱动程序之类的问题,在这些问题上您可能无法负担分配费用,或者对于实时系统,在这些问题上内存成本必须非常可预测。

关于c# - 为什么其他语言没有类似 Java 垃圾收集器的自动垃圾收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2444791/

相关文章:

c# - VS 创建单元测试命令不适用于内部方法?

c# - 从工程符号转换为double和REGEX,将一个字符串分成两部分;数字和字符

c++ - 使用 cmake 在项目属性(eclipse)中添加定义

c++ - 如何使用自然语法实现线程安全的容器?

c# - 电视调谐器程序

c# - 从 ASP.NET 标识中删除 `AspNetUserLogins` 表

java - 给定两个排序列表(或数组)和一个数字 k,创建一个算法来获取两个列表中最少的 k 个数字

java 声音 api AudioSystem.getMixerInfo() 问题

java - 如何安全地将 int 向下转换为 Short?

c# - 使用分隔符将 List<List<String>> 连接成单个字符串